新开发一个中间件,需要使用到路由信息。
但是,RouteData是在MVC中间件中才会被赋,我们的中间件是在MVC中间件之前使用的,这样一来,就没办法获取到路由信息了。
好在使用EndPointRouting帮我们解决了这个问题。
public void ConfigureServices(IServiceProvider services) { ... // SetCompatibilityVersion也是必须的,这边不能忘记写了 services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); } public void Configure(IApplicationBuilder app) { .... app.UseEndpointRouting(); // 你的中间件 app.UseMvc(); }
SetCompatibilityVersion和UseEndpointRouting缺一不可。
如图是在中间件中获取到的路由数据。