考虑这段代码。
protected void Application_Start()
{
InitLogger();
InitAppContext();
AreaRegistration.RegisterAllAreas();
// WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
假设在InitLogger中发生异常。
我看到两个解决方案来解决这个问题:
Request is not available in this context
<customErrors mode="On" defaultRedirect="Error.html" />
。如果我试试他,我会http://localhost:1937/Error.html?aspxerrorpath=/
如何处理描述的情况?
感谢。
PS:为了处理控制器异常(http异常和自定义异常),我使用了一个过滤器,该部分已完成。
答案 0 :(得分:2)
您的解决方案都谈到将请求重定向到其他地方。但是,您的异常发生在应用程序启动时,因此尚未 一个请求。
如果InitLogger()可以抛出异常,请将调用包装在try / catch块中。如果您可以以某种方式处理异常(例如,您可能会尝试使用第二个记录器,或者您的应用程序可以在没有记录器的情况下运行),那么请继续处理它。如果你不能,那么 - 你的应用程序无法运行,并且由于你无法动态修复它,你需要记录某些地方出了什么问题(以帮助你稍后调查)。例如,您可以将错误写入事件日志,但请注意,如果您没有捕获异常,这将自动发生。