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 :
maxRequestLength
kilobayt olarak ölçülürmaxAllowedContentLength
bayt 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.config
iç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.config
dosyası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.config
sadece maxRequestLength
niteliğ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)
.
true
Değeri disableMaxRequestLength
parametresi 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 maxAllowedContentLength
web 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.config
Dosyayı 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 compilation
etiketin de hiçbiri yoktur .