升级到.Net Core 3.1会使经过身份验证的控制器变为404



我最近将我的项目升级到了.net core 3.1,我注意到了一些奇怪的行为,所有经过身份验证的控制器都是404。

我留下了一个默认的匿名端点,我通常只使用它来验证我的api是否工作。这个控制器工作正常。

[AllowAnonymous]
[Route("api/[controller]")]
public class ValuesController : Controller
{
//...
}

尽管没有用[ApiController]进行装饰,但这个控制器似乎工作得很好

我发现了一个相关的问题,声明这与ApiVersioning 有关

然而,我看不到在.Net Core 3.1 的启动中设置这一点的方法

我已经将[ApiController]添加到所有经过身份验证的控制器中,我从中看到的唯一影响是,我的所有公共方法现在都有资格验证允许绑定到主体的参数数量。一切依然404的

[ApiController]
[Route("api/[controller]")]
public class AccountController : Controller
{
//...
HttpPost("ExternalLogin")]
[AllowAnonymous]
public IActionResult ExternalLogin(string provider, string entryCode = null, string returnUrl = null)
{
//...
}
}

如何让我的控制器接收请求?

如果从.NET Core 2.2迁移到3.1,则必须调整启动类:

在ConfigureServices中:更换services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

带有

services.AddControllers();

在Configure方法中:而不是app.UseMvc();

用途:

app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});

相关内容

最新更新