我们希望处理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 –