的web.config:
<customErrors mode="On" defaultRedirect="~/Foo.aspx" />
当Foo.aspx.cs正在运行时,我怎么知道未被捕获的异常是什么原因让我发送到Foo.aspx?
答案 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可以处理该数据。
不确定您的最终目标是什么,但如果您尝试自定义错误消息,则会根据异常情况出现,您可以这样处理。