我正在尝试从 HandleErrorAttribute 中从我的派生类中记录404错误。
这是我的班级:
public class LogExceptionAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext exceptionContext)
{
Log.LogException(exceptionContext.Exception, exceptionContext.Exception.Message);
base.OnException(exceptionContext);
}
}
我在应用程序中得到所有异常,但我没有得到404错误。我想获得所有类型的错误,例外。
答案 0 :(得分:5)
您需要一个最后注册的catchall路由,然后在控制器记录错误后以404响应:
routes.MapRoute(
"NotFound",
"{*url}",
new {controller = "NotFound", action = "index"}
)
public class NotFoundController: Controller
{
public ActionResult Index(string url)
{
Log.Warn(this, string.Format("404 Request Not Found: {0}", url));
Response.StatusCode = 404;
var model = new NotFoundViewModel
{
Title = "Sorry but the page you are looking for does not exist",
Message = new HtmlString("Please <a href='/'>click here</a> to return to the home page")
};
return View("404", model);
}
}
答案 1 :(得分:2)
您仍然可以捕获Application_Error中的所有错误。您还可以通过修改Web.config文件中的customErrors部分来专门处理404错误。
答案 2 :(得分:0)
如果你想了解幕后发生的事情,这篇文章还有一些你可能会觉得有用的信息: