在asp.net中,我可以像这样定义一个自定义错误页面:
<configuration>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/servererrors/404.aspx" />
</customErrors>
</system.web>
</configuration>
现在我的问题:如果我替换,用AnyHTTP.aspx说404.aspx, 并且想要获取http错误的数量以概括页面,我如何得到错误的数字?
答案 0 :(得分:1)
在CustomErrors(ASP.NET 3.5 SP1)中尝试此设置:
<customErrors mode="RemoteOnly" defaultRedirect="/servererrors/AnyHTTP.aspx" RedirectMode="ResponseRewrite"/>
作为一种不同的解决方案,您也可以在Global.asax中执行此操作:
void Application_Error(object sender, EventArgs e)
{
Server.Transfer("/servererrors/AnyHTTP.aspx");
}
并在错误页面上加载上一个错误:
Exception e = Server.GetLastError();
在Global.asax文件中使用Server.Transfer()很重要;使用Response.Redirect将抛出302错误,您将丢失想要捕获的错误。
答案 1 :(得分:0)
那么你可以在冒险尝试做自己的事情之前先看看http://www.raboof.com/projects/Elmah/ ......
答案 2 :(得分:0)
我建议不要使用web.config方法。 customErrors重定向到错误页面,这没有多大意义。基本上它首先说“哦,是的,那将完美地工作,你只需要去这里”,然后然后说“哦,我们没有找到那个”。这真的是一个错误(如果这里没有任何东西,那么为什么服务器告诉我去这里,显然用户代码看起来你服务器代码搞砸了;他们去了正确的URI然后你指导他们错了。)
使用global.asax中的Server.Transfer(),设置默认HTTPHandler,或将IIS设置为执行(不重定向)您的.aspx或其他文件。如果你想要相同的处理程序来管理每个错误,那么你可以,例如,从global.asax做一个Server.Transfer(),但是包含一个关于错误类型的查询字符串参数(无论是简单的HTTP状态代码,还是更详细的东西,或在HttpContext中传递信息。