Asp.net core “MapControllerOute”、“MapDefaultControllerOute”和“MapControllerOute”之间的区别?

Asp.net core “MapControllerOute”、“MapDefaultControllerOute”和“MapControllerOute”之间的区别?,asp.net-core,asp.net-core-2.1,asp.net-core-3.0,Asp.net Core,Asp.net Core 2.1,Asp.net Core 3.0,我正在将.NET Core 2.1升级到.NET Core 3.0,我发现我必须使用UseEndpoints。但是,在一些页面上,我看到它是通过mapcontrolleroute、mapdefaultcontrolleroute或mapcontrolleroute实现的 我在检查时发现mapDefaultControllerOute基本上与mapControllerOute(“default”,“{controller=Home}/{action=Index}/{id?}”)相同。但是我不理解M

我正在将.NET Core 2.1升级到.NET Core 3.0,我发现我必须使用
UseEndpoints
。但是,在一些页面上,我看到它是通过
mapcontrolleroute
mapdefaultcontrolleroute
mapcontrolleroute
实现的


我在检查时发现
mapDefaultControllerOute
基本上与
mapControllerOute(“default”,“{controller=Home}/{action=Index}/{id?}”)相同。但是我不理解
MapControllers
的区别。最后一个函数实际上是做什么的?文档中说:“将控制器操作的端点添加到IEndpointRouteBuilder,而不指定任何路由。”,但我不明白,抱歉。

MapController
用于映射控制器上可能存在的任何属性,例如,
[Route]
[HttpGet]
,等

MapControllerRoute

使用常规路由(最常用于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 这是上面的内容,但它简化了我在上面显示的默认模式的配置

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


注意:完全可以沿边属性路由使用MapControllerOute(并通过代理MapDefaultControllerOute)。如果用户不提供属性,它将使用定义的默认模式。

这可能对您和其他人有所帮助。这是错误的答案,如果您只使用MapControllerRoute,则attribure路由仍在工作,在ASP.Net Core 3.1中进行了测试。我从您的N.B.中推断,如果您使用
MapControllerRoute
,那么这就足以完成
MapControllers
所做的一切(另外,它为没有使用属性的地方指定了一个回退路径)——也就是说,如果调用了
MapControllerRoute
,也不需要调用
MapControllerRoute
?没错,这两种方法都不用(如果调用了,我希望它会中断)。如果您希望以独占方式进行属性路由(通常使用API控制器),则使用
MapController
,否则使用
MapControllerRoute
,如果未提供显式的属性驱动路由,它将从
controller\u name/action\u name
确定端点的路由,并且还提供了defau的好处它的路线。