我們希望處理403錯誤,404錯誤,由於MySpecialDomainException
而導致的所有錯誤,併爲所有其他錯誤(包括IIS配置中的錯誤!)提供默認錯誤頁面。所有的錯誤應該返回適當的剃刀視圖,這將是非常好的在視圖前面有一個ErrorController
。 E.g.是這樣的:ASP.NET MVC 5錯誤處理
public class ErrorController : Controller
{
public ViewResult NotFound() { return View(); }
public ViewResult Forbidden() { return View(); }
public ViewResult Default()
{
var ex = ObtainExceptionFromSomewhere();
if(ex is MySpecialDomainException)
return View("MySpecialDomainException", new ErrorModel { Exception = ex });
return View("GeneralError", new ErrorModel { Exception = ex });
}
}
目前你找到許多不同的方式做到這一點在WWW上,一些最有可能過時。在這些:
- Controller.OnException()
- 錯誤過濾
- 的customErrors在web.config中元素
- 在Global.asax中的Application_Error事件處理
Q1:什麼推薦的方式來滿足ASP.NET MVC 5的要求?
此外我們想要捕獲IIS主機中發生的錯誤。 Q2:爲了防止IIS必須處理任何404s我們想添加一個匹配所有可能的URL的默認路由 - 這是值得推薦的嗎?更好地註冊IIS 404'以及?
問題3:甚至有可能註冊一個返回控制器的IIS錯誤頁面,或者只有IIS能夠使用ASPX /靜態HTML嗎?
我m好奇..當IIS配置不正確時,你會如何建議使用Razor頁面?如果IIS不工作,剃刀不會工作... –
是的,可能它甚至不可能。也許我們必須解決靜態HTML @ IIS。所以可能最好是用ASP.NET MVC覆蓋所有可能的URL,以防止404冒泡到IIS ... –
http://www.codeproject.com/Articles/850062/Exception-handling-in-ASP-NET -MVC-methods-explaine –