C# 自定义Asp.NET核心标识未经授权的响应类型和状态代码

C# 自定义Asp.NET核心标识未经授权的响应类型和状态代码,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,我有一个带有[Authorized]属性的WebApi端点。我没有配置任何其他策略或任何内容 [Authorized] [Route("foo")] public async Task<IActionResult> Foo(FooModel model) { // ....... } [授权] [路线(“foo”)] 公共异步任务Foo(FooModel模型) { // ....... } 当我尝试点击这个端点时,我没有经过身份验证,我将得到一个

我有一个带有
[Authorized]
属性的WebApi端点。我没有配置任何其他策略或任何内容

[Authorized]
[Route("foo")]
public async Task<IActionResult> Foo(FooModel model) 
{ 
    // .......
}
[授权]
[路线(“foo”)]
公共异步任务Foo(FooModel模型)
{ 
// .......
}
当我尝试点击这个端点时,我没有经过身份验证,我将得到一个404响应,没有内容


我想要得到的是:带有401状态码的自定义响应类型。我该怎么做?

您可以在
启动
类中添加以下代码:

services.ConfigureApplicationCookie(options =>
        {
            options.Events.OnRedirectToLogin = context =>
            {
                context.Response.StatusCode = 401;
                return Task.CompletedTask;
            };
        });
你的行动:

[Authorize]
public async Task<IActionResult> Foo(FooModel model) 
{ 
// ...
}

您可以在
启动
类中添加以下代码:

services.ConfigureApplicationCookie(options =>
        {
            options.Events.OnRedirectToLogin = context =>
            {
                context.Response.StatusCode = 401;
                return Task.CompletedTask;
            };
        });
你的行动:

[Authorize]
public async Task<IActionResult> Foo(FooModel model) 
{ 
// ...
}

尝试使用
[Route]
以确保正确调用该函数

[Authorized]
[Route("Foo")]
public async Task<IActionResult> Foo(FooModel model) 
{ 

}
[授权]
[路线(“Foo”)]
公共异步任务Foo(FooModel模型)
{ 
}

尝试使用
[Route]
以确保正确调用函数

[Authorized]
[Route("Foo")]
public async Task<IActionResult> Foo(FooModel model) 
{ 

}
[授权]
[路线(“Foo”)]
公共异步任务Foo(FooModel模型)
{ 
}

可能重复可能重复如果它不起作用,请共享您的
启动
类。如果它不起作用,请共享您的
启动
类。