Перехват "Превышена максимальная длина запроса" - PullRequest
107 голосов
/ 20 марта 2009

Я пишу функцию загрузки и у меня возникают проблемы с перехватом «System.Web.HttpException: превышена максимальная длина запроса» с файлами, размер которых превышает указанный максимальный размер в httpRuntime в web.config (максимальный размер установлен в 5120) , Я использую простой <input> для файла.

Проблема в том, что исключение выдается до события click кнопки загрузки, а исключение происходит до запуска моего кода. Итак, как мне поймать и обработать исключение?

РЕДАКТИРОВАТЬ: Исключение выдается мгновенно, поэтому я уверен, что это не проблема тайм-аута из-за медленных соединений.

Ответы [ 14 ]

1 голос
/ 05 апреля 2016

После тега

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

добавить следующий тег

 <httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" subStatusCode="13" />
  <error statusCode="404" subStatusCode="13" prefixLanguageFilePath="" path="http://localhost/ErrorPage.aspx" responseMode="Redirect" />
</httpErrors>

Вы можете добавить URL на страницу ошибки ...

0 голосов
/ 25 марта 2019

Это можно проверить через:

        var httpException = ex as HttpException;
        if (httpException != null)
        {
            if (httpException.WebEventCode == System.Web.Management.WebEventCodes.RuntimeErrorPostTooLarge)
            {
                // Request too large

                return;

            }
        }
0 голосов
/ 22 апреля 2016

Как насчет поймать его на событии EndRequest?

protected void Application_EndRequest(object sender, EventArgs e)
    {
        HttpRequest request = HttpContext.Current.Request;
        HttpResponse response = HttpContext.Current.Response;
        if ((request.HttpMethod == "POST") &&
            (response.StatusCode == 404 && response.SubStatusCode == 13))
        {
            // Clear the response header but do not clear errors and
            // transfer back to requesting page to handle error
            response.ClearHeaders();
            HttpContext.Current.Server.Transfer(request.AppRelativeCurrentExecutionFilePath);
        }
    }
0 голосов
/ 24 июня 2014

Вы можете решить эту проблему, увеличив максимальную длину запроса и время выполнения в вашем файле web.config:

-Пожалуйста, уточните максимальное время выполнения терки, чем 1200

<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <httpRuntime maxRequestLength="102400" executionTimeout="1200" /> </system.web> </configuration>
...