Как перенаправить на пользовательскую страницу, если произошло исключение maxQueryStringLength? - PullRequest
1 голос
/ 17 сентября 2011

Как заменить стандартную страницу ошибки в случае, если длина запроса превышает указанную в maxQueryStringLength, и показать пользователю что-то более дружелюбное?

Примечание: Хотя какHttpException это попадает в общую 400-ю ошибку, я хочу отделить условие QueryLength и показать очень конкретную страницу для этой конкретной ошибки.Поэтому я не могу использовать раздел «customErrors» для обозначения страницы, но мне нужно фильтровать это программно.Проблема с нижеуказанным в том, что он не работает.

    protected virtual void Application_Error(Object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        if (logs != null) logs.ExceptionMsg("Application exception", this, ex);

        var httpex = ex as System.Web.HttpException;
        if (httpex != null && httpex.ErrorCode == -2147467259)
        {
            Server.ClearError();
            Server.TransferRequest(@"~/main/maxlengthexceeded", false);
        }
    }

Проблема в том, что Server.TransferRequest не работает.Есть ли альтернатива тому, как я могу сказать ASP.NET, какую страницу загрузить?

1 Ответ

1 голос
/ 17 сентября 2011

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

<configuration>
  <system.web>
    <customErrors defaultRedirect="GenericError.htm"
                  mode="RemoteOnly">
      <error statusCode="500"
             redirect="InternalError.htm"/>
    </customErrors>
  </system.web>
</configuration>

Вы можете увидеть полную статью здесь: Отображение пользовательской страницы ошибок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...