ASP.NET Core中间件中的状态代码错误

时间:2017-03-03 20:01:03

标签: asp.net asp.net-core middleware

我在一个简单的中间件中遇到了问题。响应的状态代码是200,即使我在控制器操作中抛出异常并且返回给客户端的状态代码是500。

我的中间件看起来像这样:

public async Task Invoke(HttpContext context)
{
    try
    {
        await _next.Invoke(context);
    }
    catch (Exception exception)
    {
        // context.Response.StatusCode == 200
        throw;
    }
}

看起来将异常转换为500的逻辑发生在中间件管道的后续步骤中。

Configure中的Startup.cs方法如下所示:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    //app.UseExceptionHandler("/Home/Error");
    app.UseMiddleware<MyMiddleware>();
    app.UseStaticFiles();
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

请注意,我没有使用UseExceptionHandler

0 个答案:

没有答案