`MapControllerRoute`、`MapDefaultControllerRoute` 和 `MapControllers` 之间的区别?

xav*_*ier 17 asp.net-core asp.net-core-2.1 asp.net-core-3.0

我正在将 .NET Core 2.1 升级到 .NET Core 3.0,我在这里看到我必须使用UseEndpoints. 然而,在一些网页我已经看到或者它MapControllerRouteMapDefaultControllerRouteMapControllers

我查看了文档,发现它MapDefaultControllerRouteMapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}"). 但我不明白与MapControllers. 最后一个函数实际上是做什么的?文档说:“将控制器操作的端点添加到 IEndpointRouteBuilder 而不指定任何路由。”,但我不明白,抱歉。

Ric*_*res 9

MapControllers用于映射可在控制器,等,存在的任何属性[Route][HttpGet]等等。


Loz*_*ger 9

地图控制器路由

使用常规路由(最常用于 MVC 应用程序),并设置 URL 路由模式。所以你会在教程/文档中看到这样的内容:

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

您可以将其设置为您想要的任何内容(在合理范围内),您的路线将遵循此模式。上面的模式基本上{{root_url}}/{{name_of_controller}}/{{name_of_action}}/{{optional_id}}是,如果没有提供控制器和动作,它默认为home/index.

MapDefaultControllerRoute 这是上面的,但它简写了我上面显示的默认模式的配置。

MapControllers 这不会对路由做出任何假设,并且将依赖于用户执行属性路由(最常用于 WebAPI 控制器)来将请求发送到正确的位置。

NB 也完全有可能在侧属性路由中使用 MapControllerRoute(并通过代理 MapDefaultControllerRoute)。如果用户不提供属性,它将使用定义的默认模式。