Я отримую помилку Максимальна тривалість запиту перевищена, коли я намагаюся завантажити відео на свій сайт.
Як це виправити?
Я отримую помилку Максимальна тривалість запиту перевищена, коли я намагаюся завантажити відео на свій сайт.
Як це виправити?
Відповіді:
Якщо ви використовуєте IIS для розміщення вашої програми, розмір файлу для завантаження за замовчуванням становить 4 Мб. Щоб збільшити його, скористайтеся цим нижче розділом у вашому web.config
-
<configuration>
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
</configuration>
Для IIS7 і вище вам також потрібно додати рядки нижче:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Примітка :
maxRequestLength
вимірюється в кілобайтахmaxAllowedContentLength
вимірюється в байтах тому значення в цьому прикладі конфігурації відрізняються. (Обидва еквівалентні 1 ГБ.)
Web.config
замість того, що знаходиться всередині Views
папки
Я не думаю, що це тут вже згадувалося, але для того, щоб це працювало, мені довелося вказати обидва ці значення у web.config:
В system.web
<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />
І в system.webServer
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
ВАЖЛИВО : Обидва ці значення повинні відповідати. У цьому випадку моє максимальне завантаження становить 1024 мегабайта.
maxRequestLength має 1048576 KILOBYTES , а maxAllowedContentLength - 1073741824 BYTES .
Я знаю, що це очевидно, але просто не помітити.
web.config
файлі проекту .
Можливо, варто відзначити, що ви можете обмежити цю зміну URL-адресою, яку ви очікуєте використовувати для завантаження, а не весь ваш сайт.
<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>
І на всякий випадок, коли хтось шукає спосіб впоратися з цим винятком і показати змістовне пояснення користувачеві (щось на кшталт "Ви завантажуєте занадто великий файл"):
//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 або новішої версії)
HttpContext.Current.ClearError()
було потрібно для Response.Redirect()
належної роботи. У плані web.config
він працює просто з maxRequestLength
атрибутом httpRuntime
.
onchange
подію на кнопці завантаження та порівнявши розмір файлу для завантаження з максимальним обмеженням завантаження.
Якщо ви не можете оновити файли конфігурації, але керуєте кодом, який обробляє завантаження файлів HttpContext.Current.Request.GetBufferlessInputStream(true)
.
true
значенняdisableMaxRequestLength
параметра вказує рамки ігнорувати формуються межі запиту.
Детальний опис відвідайте https://msdn.microsoft.com/en-us/library/hh195568(v=vs.110).aspx
Щоб узагальнити всі відповіді в одному місці:
<system.web>
<httpRuntime targetFramework="4.5.2" maxRequestLength="1048576"/>
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
Правила:
Примітки:
детальніше MSDN
maxRequestLength (довжина в КБ) Тут як колишній Я взяв 1024 (1 МБ) maxAllowedContentLength (довжина в байтах) повинен бути таким же, як ваш maxRequestLength (1048576 байт = 1 МБ).
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
</system.webServer>
Якщо у вас є запит на отримання програми на сайті, переконайтеся, що ви встановили maxRequestLength у кореневій веб.config. Здається, що maxRequestLength в web.config додатків ігнорується.
httpRuntime maxRequestLength="###
і requestLimits maxAllowedContentLength
в веб-конфігурацію на рівні кореня, а не на рівні додатка.
Мені довелося відредагувати C:\Windows\System32\inetsrv\config\applicationHost.config
файл і додати <requestLimits maxAllowedContentLength="1073741824" />
до кінця ...
<configuration>
<system.webServer>
<security>
<requestFiltering>
розділ.
Відповідно до цієї статті підтримки Microsoft
applicationHost.config
.
Я можу додати конфігурацію веб-консолі
<system.web>
<httpRuntime maxRequestLength="1024" executionTimeout="3600" />
<compilation debug="true"/>
</system.web>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1048576"/>
</requestFiltering>
</security>
executionTimeout
Атрибут не має нічого спільного з тим, що просять, і ні робить compilation
тег.