我想在我的MVC项目中使用Application_Error,但是我无法让它工作。我以下内容添加到我的Global.asax文件:(会话仅用于测试我也会使用数据库来记录错误,如果我得到这个工作。)如何在ASP.NET MVC中使用Application_Error?
protected void Application_Error(object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
Session["Test"] = "Message:" + objErr.Message.ToString();
}
然后我试图抛出从我的HomeController和我的Home/Index视图异常,但它只触发调试。
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
throw (new Exception());
return View();
}
在我Webconfig文件我设置defaulterror页,但它并没有重定向到视图:
<customErrors defaultRedirect="Home/Error">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
我有你的解决方案的问题。 CustomErrors直接重定向到Home/Errors视图,而不触发Controller。我不知道这是可能的,但是当我在Error Action方法中放置一个调试点时,调试从不会调用。错误视图只显示在屏幕上,但url仍然与触发错误的URL相同。例如,如果我在/ Home/Job触发错误,我会得到错误视图,但URL仍然是/家/作业 – Poku 2009-09-23 15:52:32
嘿@blowdart:消息提供一个新用户无法评论:这个答案是平坦的错误。问题是如果使用web.config重定向到默认控制器操作,则从控制器类调用Server.GetLastError()不起作用。 ASP向错误控制器发起一个新的HTTP请求,该错误控制器将清除服务器变量,从而丢失异常信息。 – 2011-06-08 20:19:05
不好的答案.....这里是一个很好的文章,为什么你应该同时使用http://www.prideparrot.com/blog/archive/2012/5/exception_handling_in_asp_net_mvc – 2013-11-08 14:12:10