Hatayı alıyorum Siteme video yüklemeye çalışırken maksimum istek uzunluğu aşıldı .
Bunu nasıl düzeltirim?
Hatayı alıyorum Siteme video yüklemeye çalışırken maksimum istek uzunluğu aşıldı .
Bunu nasıl düzeltirim?
Yanıtlar:
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ürmaxAllowedContentLengthbayt 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.)
Web.configiçindeki yerine ana ana eklediğinizden emin olunViews
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.
web.configdosyasında olabilir.
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>
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)
HttpContext.Current.ClearError()gerekli oldu Response.Redirect(). Bu açıdan web.configsadece maxRequestLengthniteliği ile çalışır httpRuntime.
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 .
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.
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:
Notlar:
daha fazla bilgi MSDN
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>
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.
httpRuntime maxRequestLength="###ve requestLimits maxAllowedContentLengthweb yapılandırmasına alt uygulama düzeyinde değil kök düzeyinde koymanız gerekir .
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ı.
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
applicationHost.config.
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>
executionTimeout, sorulanlarla hiçbir ilgisi yoktur ve compilationetiketin de hiçbiri yoktur .