Asp.net-Core

MapControllerRouteMapDefaultControllerRouteMapControllers之間的區別?

  • November 29, 2019

我正在將 .NET Core 2.1 升級到 .NET Core 3.0,我看到這裡我必須使用UseEndpoints. 但是,在某些頁面上,我使用MapControllerRouteMapDefaultControllerRouteMapControllers.

我查看了文件,發現MapDefaultControllerRouteMapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}"). 但我不明白與MapControllers. 最後一個函式實際上是做什麼的?文件說:“將控制器操作的端點添加到 IEndpointRouteBuilder 而不指定任何路由。”,但我不明白,抱歉。

地圖控制器路由

使用正常路由(最常用於 MVC 應用程序),並設置 URL 路由模式。因此,您將在教程/文件中看到類似這樣的內容:

endpoints.MapControllerRoute(
   name: "default",
   pattern: "{controller=Home}/{action=Index}/{id?}");

您可以將其設置為您想要的任何內容(在合理範圍內),並且您的路線將遵循此模式。上面的模式基本上{{root_url}}/{{name_of_controller}}/{{name_of_action}}/{{optional_id}}是,如果沒有提供控制器和動作,它預設為home/index.

MapDefaultControllerRoute 這是上面的,但它簡化了我在上面顯示的預設模式的配置。

MapControllers 這不會對路由做出任何假設,並且將依賴於使用者執行屬性路由(最常用於 WebAPI 控制器)來將請求發送到正確的位置。

NB 也完全可以使用 MapControllerRoute(以及通過代理 MapDefaultControllerRoute)沿側屬性路由。如果使用者不提供屬性,它將使用定義的預設模式。

引用自:https://stackoverflow.com/questions/59107064