我最近将我的项目升级到了.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();
});