首页
学习
活动
专区
工具
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"消息。

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

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

相关·内容

  • HTTP状态码列表

    1xx消息——请求已被服务器接收,继续处理 2xx成功——请求已成功被服务器接收、理解、并接受 3xx重定向——需要后续操作才能完成这一请求 4xx请求错误——请求含有词法错误或者无法被执行 5xx服务器错误——服务器在处理某个正确请求时发生错误 100199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程。 200299:表示成功接收请求并已完成整个处理过程。常用200 300399:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、常用302(意味着你请求我,我让你去找别人),307和304(我不给你这个资源,自己拿缓存) 400499:客户端的请求有错误,常用404(意味着你请求的资源在web服务器中没有)403(服务器拒绝访问,权限不够) 500~599:服务器端出现错误,常用500

    03
    领券