ASP.NET'te maksimum yükleme dosyası boyutu nasıl artırılır?


238

ASP.NET dosya yükleme istisna bir form var. Maksimum yükleme boyutunu varsayılan olarak 4 MB'ın üzerine çıkarmam gerekiyor.

Ben msdn de aşağıdaki kodu referans bazı yerlerde bulduk .

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

Referansların hiçbiri aslında nasıl kullanılacağını açıklamıyor ve başarılı olamadığım birkaç şeyi denedim. Bu özelliği yalnızca dosya yüklemesini isteyen belirli sayfalar için değiştirmek istiyorum.

Bu gitmek için doğru yol mu? Bunu nasıl kullanırım?


Bunun bir kod sınırlaması olduğundan ve ana bilgisayar sınırlaması olmadığından emin misiniz? IIS'nin de bir sınırı vardır.
MrChrister

Net bir sınırlama olduğundan emindim. Aşağıdaki cevap benim için çalıştı.
Eddie

Yanıtlar:


406

Bu ayar web.config dosyanıza gider. Yine de tüm uygulamayı etkiler ... Her sayfa için ayarlayabileceğinizi sanmıyorum.

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="xxx" />
  </system.web>
</configuration>

"xxx" KB cinsindendir. Varsayılan 4096'dır (= 4 MB).


6
Bu beni site çapında çalıştırdı. Şimdilik 10240 (veya 10 MB) olarak ayarladım. Teşekkürler!
Eddie

12
IIS7 + çalıştırıyorsanız ve bu çalışmıyorsa cevabımı görün.
orta

Bunu bir denetleyiciyle sınırlamak mümkün mü?
Guillermo Varini

@Eddie i iki web.config dosyaları var ben ikisinde de kullandım ama çalışmıyor. nasıl yapabilirim ?
Ahmad

2
Bu belirli bir yolda da mümkündür. <location path = "Api / Controller"> <system.web> <authorization> <kullanıcılara izin ver = "*" /> </authorization> <httpRuntime maxRequestLength = "102400" /> </system.web> </location> (yetkilendirme etiketi gerekli değildir)
nios

182

IIS 7+ için ve ayrıca httpRuntime maxRequestLength ayarını da eklemeniz gerekir:

  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="52428800" /> <!--50MB-->
      </requestFiltering>
    </security>
  </system.webServer>

Veya IIS'de (7):

  • Büyük dosya yüklemelerini kabul etmesini istediğiniz web sitesini seçin.
  • Ana pencerede 'Filtreleme iste'yi çift tıklayın
  • "Özellik Ayarlarını Düzenle" yi seçin
  • "İzin verilen maksimum içerik uzunluğu (bayt)"

Kilobayt unuttum: p
Andrew Myhre

10
muhtemelen ikisini de ayarlamanız maxRequestLengthve maxAllowedContentLengthçalışmanız için ... bkz. stackoverflow.com/questions/6327452/…
MikeM

7
@AndrewMyhre maxAllowedContentLength KB değil bayt cinsindendir. Microsoft dokümanları varsayılanın 30 MB olduğunu söylüyor.
Dan Randolph

1
En belgelendiği gibi @DanRandolph aslında varsayılan, 30000000 (yaklaşık 28.6MB) 'dir iis.net/configreference/system.webserver/security/...
aaaantoine

Kesinlikle her iki ayara da ihtiyacınız var.
mohrtan

74

Yükleme dosyasının boyut sınırını artırmak için iki yolumuz var

1. IIS6 veya daha düşük

Varsayılan olarak, ASP.Net'te sunucuya yüklenecek dosyanın maksimum boyutu 4 MB civarındadır . Bu değer, web.config dosyasındaki maxRequestLength özniteliği değiştirilerek artırılabilir .

Unutmayın: maxRequestLenght KB cinsindendir

Örnek : yüklemeleri 15 MB ile sınırlamak istiyorsanız, maxRequestLength değerini “15360” (15 x 1024) olarak ayarlayın.

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

2. IIS7 veya üstü

Files.IIS7 yüklemek için buraya kullanılan hafif farklı bir şekilde tanıttı modülü filtreleme isteği yolu boru hattı çalışmaları değeri IIS ki (olan .Hangi ASP.Net.Means önce idam MaxAllowedContentLength ) daha sonra ilk ASP.NET değerini (işaretli maxRequestLength ) kontrol edilir. MaxAllowedContentLength özniteliği varsayılan olarak 28,61 MB'dır.Bu değer, aynı web.config dosyasındaki her iki özniteliğin değiştirilmesi ile artırılabilir .

Unutmayın: maxAllowedContentLength bayt cinsindendir

Örnek : yüklemeleri 15 MB ile sınırlamak istiyorsanız, maxRequestLength değerini “15360” ve maxAllowedContentLength değerini “15728640” (15 x 1024 x 1024) olarak ayarlayın.

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

<system.webServer>              
   <security> 
      <requestFiltering> 
         <!-- maxAllowedContentLength, for IIS, in bytes --> 
         <requestLimits maxAllowedContentLength="15728640" ></requestLimits>
      </requestFiltering> 
   </security>
</system.webServer>

MSDN Başvuru bağlantısı : https://msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx


17

Web.config dosyasındaki bu satırın maksimum yükleme boyutunu ayarlayacağına inanıyorum:

<system.web>

        <httpRuntime maxRequestLength="600000"/>
</system.web>

Günün yarısını geçirdikten sonra bu bana yardımcı oldu !!! Çok teşekkürler !!!
Sagar Khatri

13

2 GB maksimum sınır için, web.config uygulamanızda:

<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" maxRequestLength="2147483647" executionTimeout="1600" requestLengthDiskThreshold="2147483647" />
</system.web>

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="2147483647" />
    </requestFiltering>
  </security>
</system.webServer>

7

Windows 2003 / IIS 6.0 ise, C: \ windows \ system32 \ inetsrv \ klasöründe bulunan metabase.xml dosyasında AspMaxRequestEntityAllowed = "204800" dosyasına bakın.

"204800" (~ 205Kb) varsayılan değeri bence çoğu kullanıcı için çok düşük. Değeri maks. Gerektiğini düşündüğünüz değere değiştirin.

Dosyayı düzenledikten sonra kaydedemiyorsanız, ISS sunucusunu durdurmanız veya sunucunun dosyanın düzenlenmesine izin vermesini etkinleştirmeniz gerekir:

alternatif metin
(kaynak: itmaskinen.se )

Düzenleme: Soruyu doğru okumadım (webconfig içinde maxrequest nasıl ayarlanır). Ama bu Informatin diğer insanlara, Win2003 için win2000-sunucudan sitelerini taşımak ve çalışan bir yükleme-işlevi vardı ve aniden var çok insan için interrest olabilir Request.BinaryRead Başarısız hata bunu kullanmak gerekir. Cevabı burada bırakıyorum.


5

Bir win 2008 IIS sunucusunda aynı sorunu yaşadım, bu yapılandırmayı web.config dosyasına eklerken sorunu çözdüm:

<system.web>
    <httpRuntime executionTimeout="3600" maxRequestLength="102400" 
     appRequestQueueLimit="100" requestValidationMode="2.0"
     requestLengthDiskThreshold="10024000"/>
</system.web>

RequestLengthDiskThreshold varsayılan olarak benim uygulama için çok küçük bu yüzden 80000 bayt. requestLengthDiskThreshold bayt cinsinden ölçülür ve maxRequestLength Kbytes cinsinden ifade edilir.

Uygulama bir System.Web.UI.HtmlControls.HtmlInputFilesunucu bileşeni kullanıyorsa sorun vardır . Bunu çözmek için requestLengthDiskThreshold'u artırmak gerekir.


1
Göre msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspx "kilobayt belirtir giriş akımı tamponlama eşik sınırı. Bu değer maxRequestLength özelliği geçmemelidir." yani en çok istek uzunluğu ile aynı olmalıdır?
Jeff

Evet @ Jeff, requestLengthDiskThreshold'un değeri maxRequestLength değerinden küçük olmalıdır, ancak ilki bayt cinsinden ifade edilir. RequestLengthDiskThreshold maxRequestLength değerinden büyükse, bir ConfigurationErrorsException oluşturulmalıdır, böylece doğru değeri kendi başınıza test edebilirsiniz. Bkz forums.asp.net/t/...
Massimo Zerbini

4

Framework 4.6 kullanıyorsanız

<httpRuntime targetFramework="4.6.1" requestValidationMode="2.0" maxRequestLength="10485760"  />

4

Maksimum dosya boyutu tek bir MVC Denetleyici veya bir Eylem ile sınırlandırılabilir.
web.config <location> etiketi bunun için kullanılabilir:

<location path="YourAreaName/YourControllerName>/YourActionName>">
  <system.web>
    <!-- 15MB maxRequestLength for asp.net, in KB 15360 -->
    <httpRuntime maxRequestLength="15360" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 15MB maxAllowedContentLength, for IIS, in bytes 15728640 -->
        <requestLimits maxAllowedContentLength="15728640" />
      </requestFiltering>
    </security>
  </system.webServer>
</location>

Veya bu girişleri alanın kendi web.config dosyasına ekleyebilirsiniz.


Bu daha yüksek olmalı ve kabul edilen cevap yerine kullanılmalıdır, çünkü bu istek büyüklüğünü doğrulamak için daha güvenlidir.
Jonathan Ortega

4

Bunun eski bir soru olduğunu biliyorum.

Yani yapmanız gereken bu:

Web.config dosyanıza şunu ekleyin <system.web>:

<!-- 3GB Files / in kilobyte (3072*1024) -->
<httpRuntime targetFramework="4.5" maxRequestLength="3145728"/>

ve bunun altında <system.webServer>:

<security>
    <requestFiltering>

      <!-- 3GB Files / in byte (3072*1024*1024) -->
      <requestLimits maxAllowedContentLength="3221225472" />

    </requestFiltering>
</security>

Yorumda bunun nasıl çalıştığını görüyorsunuz. Birinde baytın, diğerinin kilobaytta olması gerekir. Umarım yardımcı olur.


2

Bu kod bloğunu uygulama web.config dosyanıza yazabilirsiniz.

<httpRuntime maxRequestLength="2048576000" />
<sessionState timeout="3600"  />

Bu kodu yazarak şimdi daha büyük bir dosya yükleyebilirsiniz



0

Asp upload kontrolü için dosya boyutunu artırmak için nasıl bir blog yazı var .

Gönderiden:

Varsayılan olarak, FileUpload denetimi en fazla 4MB dosya yüklenmesine izin verir ve yürütme zaman aşımı 110 saniyedir. Bu özellikler web.config dosyasının httpRuntime bölümünden değiştirilebilir. MaxRequestLength özelliği yüklenebilecek maksimum dosya boyutunu belirler. ExecutionTimeout özelliği, yürütme için maksimum süreyi belirler.


0

Yerel makinenizde çalışır ve IIS'de (Windows Server 2008 R2 kullandım) dağıtımdan sonra çalışmazsa bir çözümüm var.

IIS'yi açın (inetmgr) Web sitenize gidin Sağ tarafta İçerik'e (Filtre Filtreleme İsteği) gidin Özellik Ayarlarını Düzenle'ye gidin Maksimum içerik boyutunu (Gerekli bayt) olarak değiştirin. Ayrıca http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits başlıklarından da yardım alabilirsiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.