我们要处理 403 错误、404 错误、由于 a 引起的所有错误,MySpecialDomainException
并为所有其他错误(包括 IIS 配置中的错误!)提供默认错误页面。所有错误都应该返回正确的 Razor 视图,ErrorController
在视图前面有一个非常好。例如这样的:
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()
- 错误过滤器
- web.config 中的 customErrors 元素
- Global.asax 的 Application_Error 中的处理
Q1:使用 ASP.NET MVC 5 满足我们要求的推荐方法是什么?
我们还想捕捉 IIS 主机中发生的错误。Q2:为了防止 IIS 必须处理任何 404,我们考虑添加一个匹配所有可能 URL 的默认路由 - 这是否值得推荐?最好也注册 IIS 的 404?
Q3:是否可以注册一个返回到控制器的 IIS 错误页面,或者 IIS 是否仅支持 ASPX / 静态 HTML?