新開發一個中間件,需要使用到路由信息。
但是,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缺一不可。
如圖是在中間件中獲取到的路由數據。