为什么删除兼容性版本会导致在控制器中引发异常时返回 404(而不是 500)



考虑这个aspnet Core 2.2代码(非常样板(:

public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc();
}
}

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
throw new Exception();
}
}

实际上,调用 api/values 将返回 500。 注释掉服务。AddMvc((.设置兼容性版本(CompatibilityVersion.Version_2_2(;但是,使其返回 404。

SetCompatibility Version 中发生了什么,使其以这种方式运行?

ASP.NET Core 2.2的默认兼容性是 2.0,因此您可能需要将应用程序降级到 2.0 才能使其在不调用SetCompatibilityVersion的情况下工作。 有关详细信息,请参阅 ASP.NET 核心 MVC 的兼容性版本 . 您还可以查看源中哪些选项受到影响。

最新更新