0

网络配置:

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

当 Foo.aspx.cs 运行时,我怎么知道是一个未捕获的异常将我发送到 Foo.aspx?

4

3 回答 3

2

检查Server.GetLastError()并检查Response.StatusCode以确定页面被调用的原因。

如果您设置页面上的元素customErrors仅在出现未知状态时调用,即如果您为状态码 404 和 403 指定自定义页面,则仅在出现不同状态时才会调用您的页面。web.configdefautRedirectfoo.aspx

于 2010-03-15T20:38:00.833 回答
0

代码:

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

我希望有更好的东西?

于 2010-03-15T20:26:47.027 回答
0
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 可以使用该数据。

不确定您的最终目标是什么,但是如果您尝试根据异常自定义错误消息,您可以通过这种方式处理它。

于 2010-03-15T20:29:49.003 回答