asp.net core webapi 注册MVC时异常处理

在创建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相关代码执行中的异常.

微软官方文档:
https://docs.microsoft.com/zh-cn/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visual-studio#use-mvc-without-endpoint-routing

猜你喜欢

转载自blog.csdn.net/weixin_44517477/article/details/105950306