【问题标题】:Application_Error() not being called if Middleware throws an exception如果中间件抛出异常,则不会调用 Application_Error()
【发布时间】:2014-09-20 02:11:48
【问题描述】:

我最初有一个 IIS 托管的 Nancy 应用程序,它有一个自定义错误页面 Errors\500.html。在 Errors 文件夹中,我有一个 Web.config 文件,该文件删除了 Nancy 处理程序,以便可以提供错误页面。

我处理了两种类型的错误:

  1. 初始化 Nancy 框架或 Nancy 模块时出现的错误将由 Global.asax 中的Application_Error() 处理。
  2. 运行 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。

【问题讨论】:

    标签: owin nancy


    【解决方案1】:

    使用 OWIN 时不调用 Application_Error()。

    【讨论】:

    • 如果您使用的是 ASP (Katana) 和 Owin,它似乎会被调用。我的问题真的归结为,如何让我的自定义错误页面加载(最好仍然使用 Application_Error())?
    猜你喜欢
    • 2021-09-03
    • 1970-01-01
    • 2012-07-17
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2017-01-12
    • 1970-01-01
    相关资源
    最近更新 更多