我们目前正在使用BaseController中的HandleError属性处理ASP.NET MVC 2应用程序中的错误。
下面给出了Web.config的自定义错误部分,它可以很好地处理源自控制器的所有未处理的异常
<customErrors mode="On" defaultRedirect="error.aspx">
<error statusCode="404" redirect="~/error/not-found"/>
</customErrors>
Error.aspx位于/ Views / Shared文件夹下,这是一个继承自HandleErrorInfo的视图
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<HandleErrorInfo>" %>
我们在Global.asax的
的Application_Start事件处理程序中有以下代码protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
Bootstrapper.Initialize();
ControllerBuilder.Current.SetControllerFactory(new CustomControllerFactory(logger));
RegisterRoutes(RouteTable.Routes);
}
Bootstrapper.Initialize()在配置Structuremap注册表时抛出了一些错误。此错误不会调用web.config中指定的Error.aspx,但我必须使用Application_Error事件处理程序单独处理它们。
对于在普通ASP.NET MVC管道之外引发的错误,显示相同error.aspx的最佳方法是什么?