我想在我的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