确定.NET是否将我发送到自定义错误页面?

时间:2010-03-15 20:26:10

标签: asp.net error-handling custom-errors

的web.config:

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

当Foo.aspx.cs正在运行时,我怎么知道未被捕获的异常是什么原因让我发送到Foo.aspx?

3 个答案:

答案 0 :(得分:2)

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

如果在customErrors上设置web.config元素,defautRedirect页面只会在遇到未知状态时调用,也就是说,如果为状态代码404指定自定义页面,则例如,如果出现不同的状态,则只会调用foo.aspx页面。

答案 1 :(得分:0)

代码:

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

我希望有更好的东西?

答案 2 :(得分: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可以处理该数据。

不确定您的最终目标是什么,但如果您尝试自定义错误消息,则会根据异常情况出现,您可以这样处理。