【发布时间】:2012-12-03 13:40:46
【问题描述】:
出于测试目的,我有这个方法:
public ActionResult Index()
{
System.Diagnostics.Debug.Write("Index");
return new HttpNotFoundResult();
}
正在调用该方法(输出“索引”)。不知何故,它导致HttpException 被抛出。在我的 Global.asax 文件中,我有一个 Application_Error 实现:
void Application_Error(object sender, EventArgs e)
{
Exception exc = Server.GetLastError();
if (exc is System.Web.HttpException)
{
string msg = "UrlReferrer: "
+ Context.Request.UrlReferrer + " UserAgent: " + Context.Request.UserAgent
+ " UserHostAddress: " + Context.Request.UserHostAddress + " UserHostName: "
+ Context.Request.UserHostName;
ErrorHandler.Error(exc.Message, msg);
}
else {
...
}
}
在系统处理完Index 的请求后调用此方法。我认为HttpNotFoundResult 会导致抛出异常 - 或者可能会为任何状态码为 404 的ActionResult 抛出异常。
这很烦人,因为它绕过了我的控制器上的OnException 处理程序。对于我的网站,Application_Error 应该是最后的后备方案 - 大多数正常错误都打算在其他地方处理(由控制器或操作过滤器)。我只希望Application_Error 记录完全意外的异常,或者记录图像或 .js 文件之类的 404。
有没有办法阻止 asp.net 为程序生成的 404 引发异常?或者,有没有办法在Application_Error 中确定HttpException 是否由程序生成的 404 引起?
【问题讨论】:
标签: c# asp.net asp.net-mvc