首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C# .NET核心Web API,抛出一个AuthorizationException,客户端得到500分。我如何让它返回401呢?

要让C# .NET核心Web API在抛出AuthorizationException时返回401状态码,可以通过以下步骤实现:

  1. 在Web API项目中,找到处理异常的代码段。通常,这个代码段位于Startup.cs文件的Configure方法中的异常处理中间件中。
  2. 在异常处理中间件中,找到处理AuthorizationException的代码块。这个代码块可能使用app.UseExceptionHandlerapp.UseStatusCodePages等方法。
  3. 在处理AuthorizationException的代码块中,将返回的HTTP状态码从500修改为401。可以使用HttpContext.Response.StatusCode属性来设置状态码,将其设置为401即可。

以下是一个示例代码片段,展示了如何修改异常处理中间件以返回401状态码:

代码语言:txt
复制
app.UseExceptionHandler(errorApp =>
{
    errorApp.Run(async context =>
    {
        var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>();
        if (exceptionHandlerPathFeature?.Error is AuthorizationException)
        {
            context.Response.StatusCode = 401;
            await context.Response.WriteAsync("Unauthorized");
        }
        else
        {
            context.Response.StatusCode = 500;
            await context.Response.WriteAsync("Internal Server Error");
        }
    });
});

通过以上修改,当抛出AuthorizationException时,客户端将收到返回的401状态码和"Unauthorized"消息。

请注意,以上代码只是示例,实际应用中可能需要根据项目的具体情况进行适当的调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券