【发布时间】:2014-09-20 02:11:48
【问题描述】:
我最初有一个 IIS 托管的 Nancy 应用程序,它有一个自定义错误页面 Errors\500.html。在 Errors 文件夹中,我有一个 Web.config 文件,该文件删除了 Nancy 处理程序,以便可以提供错误页面。
我处理了两种类型的错误:
- 初始化 Nancy 框架或 Nancy 模块时出现的错误将由 Global.asax 中的
Application_Error()处理。 - 运行 Nancy 路由时出现的任何错误都将由自定义 Nancy
IStatusCodeHandler实现处理。
改用 Nancy.Owin 后,Application_Error() 将不再被调用。
我在 Startup.cs 中尝试了Configuration() 的一些变体,例如:
app.UseNancy(options => options.PassThroughWhenStatusCodesAre(HttpStatusCode.InternalServerError));
但我无法调用 Application_Error()。
我尝试创建一个自定义中间件来处理异常,但这仅适用于运行路由时的异常,而不适用于加载 Nancy 模块时出现问题:
app.UseNancy(options => options.PassThroughWhenStatusCodesAre(HttpStatusCode.InternalServerError));
app.Use<MyCustomExceptionMiddleware>();
如何加载我的自定义错误页面(最好仍然使用
Application_Error())?
使用 Nancy 0.22.2、Owin 1.0 和 Microsoft.Owin.Host.SystemWeb 3.0.0。
【问题讨论】: