如果Middleware抛出异常,则不会调用Application_Error()

时间:2014-09-08 02:23:22

标签: owin nancy

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

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

  1. 初始化Nancy Framework或Nancy模块时的错误将由 Global.asax 中的Application_Error()处理。
  2. 运行Nancy路由时的任何错误都将由自定义Nancy IStatusCodeHandler实现处理。
  3. 切换到使用 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。

1 个答案:

答案 0 :(得分:0)

使用OWIN时不会调用Application_Error()。