在创建asp.net core webapi,注册使用MVC服务时遇到了点问题
如下:
直接注册MVC,并在管道内配置中间件时有警告
查询资料后发现是:
在 ASP.NET Core 3.0 UseMvc中UseMvcWithDefaultRoute通过或使用 MVC 需要显式选择加入Startup.ConfigureServices。 这是必需的,因为 MVC 必须知道它是否可以在初始化期间依赖于授权和 CORS 中间件。 如果应用程序尝试使用不受支持的配置,则会发出警告。
微软官方建议使用以下方法注册MVC:
如果应用需要旧IRouter支持,请使用EnableEndpointRouting中Startup.ConfigureServices的以下任一方法禁用
services.AddMvc(options => options.EnableEndpointRouting = false);
services.AddControllers(options => options.EnableEndpointRouting = false);
services.AddControllersWithViews(options => options.EnableEndpointRouting = false);
services.AddRazorPages().AddMvcOptions(options => options.EnableEndpointRouting = false);
之后就可以在管道内正常的注册中间件了
注意顺序, 应该在处理异常的middleware后边调用app.UseMvc(), 所以处理异常的middleware可以在把request交给mvc之间就处理异常, 更重要的是它还可以捕获并处理返回MVC相关代码执行中的异常.