Определить, если .NET отправил меня на страницу пользовательских ошибок? - PullRequest
0 голосов
/ 15 марта 2010

web.config:

<customErrors mode="On" defaultRedirect="~/Foo.aspx" /> 

Когда Foo.aspx.cs запущен, как я могу узнать, что необработанное исключение - это то, что отправило меня в Foo.aspx?

Ответы [ 3 ]

2 голосов
/ 15 марта 2010

Проверьте Server.GetLastError(), а также проверьте Response.StatusCode, чтобы определить, почему страница была вызвана.

Если вы установите элемент customErrors на web.config, то страница defautRedirect будет вызываться только при возникновении неизвестного состояния, то есть, если вы задаете пользовательские страницы, например, для кодов состояния 404 и 403, ваш foo.aspx Страница будет вызываться только при появлении другого статуса.

0 голосов
/ 15 марта 2010
void Application_Error(object sender, EventArgs e)
{
    HttpContext ctx = HttpContext.Current;
    Exception exception = ctx.Server.GetLastError();
    ctx.Server.ClearError();
    ctx.Server.Transfer("Foo.aspx?ERROR" + exception.Message);

}

Этот метод сработает до того, как вы перейдете к Foo.aspx, так что вы можете обнаружить, что вы исходите из ошибки, а не из-за перенаправления. Затем вы можете добавить переменную QueryString к URL, чтобы Foo.aspx мог работать с этими данными.

Не знаю, какова ваша конечная цель, но если вы пытаетесь настроить сообщение об ошибке, появляется исключение, которое вы можете обработать таким образом.

0 голосов
/ 15 марта 2010

Код:

if (!string.IsNullOrEmpty(Request["aspxerrorpath"])) {
    ....
}

Надеюсь на что-нибудь получше?

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