Превышена максимальная длина запроса, не выполняется перенаправление на странице с ошибкой

Я перешел по этим ссылкам:

  1. Перехват превышена максимальная длина запроса и
  2. ASP. NET - как показать страницу с ошибкой при загрузке большого файла (превышена максимальная длина запроса)?

для отображения страницы ошибки для обработки загрузки файлов, превышающих maxRequestLength в web.config

Но моя проблема в том, что он не перенаправляется на страницу с ошибкой (в сообщении говорится, что веб-страница не может быть отображена). Я не знаю, что мне не хватает.

Вот мой код @ Global.asax:

void Application_Error(object sender, EventArgs e) 
{       
    if (IsMaxRequestLengthExceeded(Server.GetLastError()))
    {
        this.Server.ClearError();
        this.Server.Transfer("~/Error.html");
    }
}

private bool IsMaxRequestLengthExceeded(Exception ex)
{
    Exception main;
    HttpUnhandledException unhandledEx = (HttpUnhandledException)ex;

    if (unhandledEx != null && unhandledEx.ErrorCode == -2147467259)
    {
        main = unhandledEx.InnerException;
    }
    else
    {
        main = unhandledEx;
    }

    HttpException httpException = (HttpException)main;
    if (httpException != null && httpException.ErrorCode == -2147467259)
    {
        if (httpException.StackTrace.Contains("GetEntireRawContent"))
        {
            return true;
        }
    }

    return false;
}

И @ web.config:

<httpRuntime executionTimeout="1200" />
<customErrors defaultRedirect="Error.html" mode="On">
</customErrors>

Выяснилось, что когда maxRequestLength не инициализирован, по умолчанию установлено значение 4 МБ. (Я не устанавливал, потому что для меня это не важно.)

Надеюсь, ты поможешь мне с этим. Спасибо


person KaeL    schedule 21.07.2011    source источник
comment
Разве Error.html в web.config не должен быть таким же, как в Global.asax ~ / Error.html?   -  person Răzvan Flavius Panda    schedule 21.07.2011
comment
Привет, использование Error.html вызывает ошибку, мне нужен символ ~, чтобы указать корневой путь виртуального каталога.   -  person KaeL    schedule 21.07.2011
comment
Разве это не должно быть ~ / Error.html в обоих местах (также web.config)?   -  person Răzvan Flavius Panda    schedule 21.07.2011
comment
Думаю, что нет, мой web.config работает как положено с defaultRedirect="Error.html" :(   -  person KaeL    schedule 21.07.2011
comment
Я предполагаю, что Error.html не указывает на страницу с ошибкой и поэтому не может быть отображен. Попробуйте также использовать ~ / Error.html в web.config. Проверьте это: пути ASP.NET   -  person Răzvan Flavius Panda    schedule 21.07.2011
comment
Привет, мой web.config работает правильно, как раз в сценарии выше, при загрузке файлов, превышающих maxRequestLength, он не перенаправляет на страницу с ошибкой. Кроме того, отображается страница с ошибкой.   -  person KaeL    schedule 21.07.2011
comment
Привет, я тестирую это, и у меня следующая ошибка ... Невозможно привести объект типа 'System.Web.HttpCompileException' к типу 'System.Web.HttpUnhandledException' .... - кто-нибудь знает почему?   -  person Diego    schedule 06.04.2016


Ответы (1)


Можете добавить

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

сразу после

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

где вы перенаправляете на страницу ошибки ...

person Diego    schedule 05.04.2016