Maksimum istek uzunluğu aşıldı.


1049

Hatayı alıyorum Siteme video yüklemeye çalışırken maksimum istek uzunluğu aşıldı .

Bunu nasıl düzeltirim?

Yanıtlar:


1971

Uygulamanızı barındırmak için IIS kullanıyorsanız, varsayılan yükleme dosyası boyutu 4 MB'dir. Artırmak için lütfen aşağıdaki bölümleri kullanın web.config-

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

IIS7 ve üstü için aşağıdaki satırları da eklemeniz gerekir:

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

Not :

  • maxRequestLengthkilobayt olarak ölçülür
  • maxAllowedContentLengthbayt cinsinden ölçülür

bu yüzden bu yapılandırma örneğinde değerler farklıdır. (Her ikisi de 1 GB'ye eşdeğerdir.)


7
Teşekkür ederim sachin ve ben <httpRuntime maxRequestLength = "32768" executionTimeout = "180" /> gibi bazı şeyler ekledi
Surya sasidhar

11
maxAllowedContentLength kilobayt değil bayt cinsinden olmalıdır, bu nedenle sağlanan örnekler eşdeğer değildir.
Matthew Sharpe

33
Hem IIS 7.5 hem de VS RC 2012 IIS Express ile bunlardan İKİ ayarlamam gerekiyordu. HttpRuntime one, ASP.NET'in maksimum uzunluğunu yapılandırırken requestLimits, IIS'nin maksimum uzunluğunu, stackoverflow.com/questions/6327452/… ve forums.iis.net/t/1169846.aspx
Despertar

18
Yine, maxAllowedContentLength öğesinin kilobayt değil bayt cinsinden olduğunu belirtmek gerekir. İki değer aynı sayı olmamalıdır, çünkü aynı ölçüm birimi değildirler.
Pandincus

13
Bu ayarı klasörün Web.configiçindeki yerine ana ana eklediğinizden emin olunViews
Serj Sagan

553

Burada bahsedildiğini sanmıyorum, ancak bu çalışmayı sağlamak için, web.config içinde bu değerlerin her ikisini de sağlamak zorunda kaldım:

İçinde system.web

<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />

Ve system.webServer

<security>
    <requestFiltering>
        <requestLimits maxAllowedContentLength="1073741824" />
    </requestFiltering>
</security>

ÖNEMLİ : Bu değerlerin her ikisi de eşleşmelidir. Bu durumda, maksimum yüklemem 1024 megabayttır.

maxRequestLength, 1048576 KILOBYTES değerine ve maxAllowedContentLength, 1073741824 BYTES değerine sahiptir .

Açık olduğunu biliyorum, ama gözden kaçırmak kolay.


5
Endişe duyabileceği herhangi bir konu için: Bu yanıt IIS-Express (WebMatrix ile asp.net-web sayfaları) için de mükemmel çalışır
VoidKing

5
Evet, bu cevap Sachin'in cevabı yerine benim için işe yaradı. Azure'da da çalışır.
Gautam Jain

5
Bu kesinlikle doğru cevaptır ... her iki giriş de mevcut olmalıdır. MVC 3 durumunda, proje kök web.configdosyasında olabilir.
Miguel Angelo

2
bir diğer önemli şey de Karl'ın bahsettiği 'executionTimeout'
Muhammed Amin

26
Bu var olan bir satır ile birleştirmek zorunda kaldı: <httpRuntime targetFramework = "4.5" maxRequestLength = "1048576" executionTimeout = "3600" />
Ken Mc

195

Bu değişikliği, sitenizin tamamı yerine yükleme için kullanılmasını beklediğiniz URL ile sınırlamak isteyebileceğinizi unutmayın.

<location path="Documents/Upload">
  <system.web>
    <!-- 50MB in kilobytes, default is 4096 or 4MB-->
    <httpRuntime maxRequestLength="51200" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 50MB in bytes, default is 30000000 or approx. 28.6102 Mb-->
        <requestLimits maxAllowedContentLength="52428800" /> 
      </requestFiltering>
    </security>
  </system.webServer>
</location>

Güzel bir çözüm konumu hakkında düşünme. Ancak MVC ile çalışırken (ve dolayısıyla rotalarla çalışırken) bir konum yolu var mı?
Luuk Krijnen

1
Yükleme işleminizi ayarladığınız rotaya karşılık gelen bir URL olurdu. Benim durumumda, formu gönderdiğim Upload adlı bir eylemi olan bir Documents controller var. Sizin durumunuzda, eyleminizin URL'si ne olursa olsun olurdu.
Nick Albrecht

Bu yanıtı beğenen herkes için şunu görün .
DontVoteMeDown

2
Dostum sen salla. Üzgünüm, ama ufak tefek oyum yeterli değildi.
Nicholas Petersen

1
Bu, MVC v5 dahil olmak üzere WebAPI ile çalışacaktır. MVC Core ile ASP.NET Core'a tıkladıktan sonra, Kestrel için ayarlamanız gereken farklı seçenekler var.
Nick Albrecht

44

Ve birisinin bu istisnayı ele almanın ve kullanıcıya anlamlı bir açıklama göstermesinin bir yolunu araması durumunda ("Çok büyük bir dosya yüklüyorsunuz" gibi bir şey):

//Global.asax
private void Application_Error(object sender, EventArgs e)
{
    var ex = Server.GetLastError();
    var httpException = ex as HttpException ?? ex.InnerException as HttpException;
    if(httpException == null) return;

    if (((System.Web.HttpException)httpException.InnerException).WebEventCode == System.Web.Management.WebEventCodes.RuntimeErrorPostTooLarge)
    {
        //handle the error
        Response.Write("Too big a file, dude"); //for example
    }
}

(ASP.NET 4 veya üstü gerekir)


1
Özel durum oluşturma için maxAllowedContentLength (maxRequestLength * 1024) değerinden daha yüksek olmalıdır.
Der_Meister

Bu yazı bana kullanıcıyı uyarmak için gerekli olanı verdi ama düzgün çalışması için HttpContext.Current.ClearError()gerekli oldu Response.Redirect(). Bu açıdan web.configsadece maxRequestLengthniteliği ile çalışır httpRuntime.
nrod

Dosya boyutu doğrulama ve kullanıcı dostu mesaj onchange, yükleme düğmesindeki bir etkinlik kullanılarak ve yükleme dosyası boyutunu maksimum yükleme sınırıyla karşılaştırarak sayfa düzeyinde JS aracılığıyla yapılabilir .
Alfred Wallace

29

Maksimum istek boyutu varsayılan olarak 4MB (4096 KB)

Bu burada açıklanmaktadır .

Yukarıdaki makalede ayrıca bu sorunun nasıl giderileceği açıklanmaktadır :)


4
Bağlantı beni microsoft destek ana sayfasına yönlendiriyor
Bishop

1
Belki bir şeyler yanlıştı. Bağlantı buraya
gofr1

22

Yapılandırma dosyalarını güncelleyemiyorsanız ancak dosya yüklemelerini işleyen kodu kontrol ediyorsanız kullanın HttpContext.Current.Request.GetBufferlessInputStream(true).

trueDeğeri disableMaxRequestLengthparametresi yapılandırılmış istenen sınırları görmezden çerçeve anlatır.

Ayrıntılı açıklama için https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx adresini ziyaret edin.


MÜKEMMEL, öyleyse üst cevap nasıl 1600 oy ve bu sadece 5 var? Bu müthiş, çünkü sık sık bunu istediğimiz tek bir işlem. Ayrıca, diğer ayarlarla karışıklık yok, vb.
Nicholas Petersen

Aradığım şey buydu.
Chris Catignani

20

Web.config dosyasında yüklenen dosyanın maksimum boyutunu yapılandırmak için bir öğe var:

<httpRuntime 
    maxRequestLength="1048576"
  />

11

Tüm cevapları tek bir yerde özetlemek için:

<system.web>
  <httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>

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

Kurallar:

  • maxRequestLength (kb olarak ifade edilir) değeri maxAllowedContentLength (bayt olarak ifade edilir) ile eşleşmelidir.
  • çoğu zaman system.web bölümü zaten bir "httpRuntime" içerebilir. targetFramework öğenizi kullanılan .net sürümünüze ayarlayın.

Notlar:

  • maxRequestLength için varsayılan değer 4096'dır (4mb). maksimum değer 2.147.483.647'dir
  • maxAllowedContentLength için varsayılan değer 30.000.000'dir (yaklaşık 30mb). maksimum değer 4.294.967.295

daha fazla bilgi MSDN


8

maxRequestLength (KB cinsinden uzunluk) Burada ör. 1024 (1MB) maxAllowedContentLength (bayt cinsinden uzunluk) maxRequestLength (1048576 bytes = 1MB) ile aynı olmalıdır.

<system.web>
   <httpRuntime maxRequestLength="1024" executionTimeout="3600" />
</system.web>

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

6

Beni günlerce rahatsız etti. Web.config dosyasını değiştirdim ancak çalışmadı. Projemde iki Web.config dosyası olduğu ortaya çıktı ve ben ROOT dizinindeki dosyayı değiştirmeliydim , diğerleri değil. Umarım bu yardımcı olur.


5

Sitedeki bir uygulamaya gitmek için bir isteğiniz varsa, kök web.config dosyasında maxRequestLength ayarladığınızdan emin olun. Uygulamaların web.config dosyasındaki maxRequestLength yok sayılıyor.


Eğer bunu bir kereden fazla oylayabilirsem yapardım. Bu hayatımın bir gününü boşa harcadı. Sanal bir dir alt uygulamanız varsa, httpRuntime maxRequestLength="###ve requestLimits maxAllowedContentLengthweb yapılandırmasına alt uygulama düzeyinde değil kök düzeyinde koymanız gerekir .
nickvans

1

Web.config dosyamızda birden fazla system.web bölümü olduğu gerçeği ile açıldım: Yapılandırma düzeyindeki system.web bölümüne <httpRuntime maxRequestLength = "1048576" /> eklediğimde işe yaradı.


1

C:\Windows\System32\inetsrv\config\applicationHost.configDosyayı düzenlemek ve <requestLimits maxAllowedContentLength="1073741824" />sonuna eklemek zorunda kaldım ...

<configuration>
    <system.webServer>
        <security>
            <requestFiltering>

Bölüm.

Gereğince Bu, Microsoft Destek Maddesi


Kendi projenizdeki web.config bunları geçersiz kılmalıdır, bu yüzden değiştirme ihtiyacını görmüyorum applicationHost.config.
bvgheluwe

-3

Yapılandırılmamış web'e derleme ekleyebilirim

<system.web> 
  <httpRuntime maxRequestLength="1024" executionTimeout="3600" /> 
  <compilation debug="true"/> 
</system.web> 
<security> 
  <requestFiltering> 
    <requestLimits maxAllowedContentLength="1048576"/> 
  </requestFiltering> 
</security>

1
Özelliğin executionTimeout, sorulanlarla hiçbir ilgisi yoktur ve compilationetiketin de hiçbiri yoktur .
Mathias Lykkegaard Lorenzen
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.