【发布时间】:2020-06-06 23:59:15
【问题描述】:
我正在使用 ExtCore.Mvc 库,当我在 2 个不同的扩展中拥有 2 个具有相同名称的控制器时出现问题。 这是我的代码:
在扩展 A 中:
public class UseEndpointsAction : IUseEndpointsAction
{
public int Priority => 1000;
public void Execute(IEndpointRouteBuilder endpointRouteBuilder, IServiceProvider serviceProvider)
{
endpointRouteBuilder.MapControllerRoute(
name: "ExtensionA",
pattern: "ExtensionA",
defaults: new { controller = "Default", action = "Index" });
}
}
在扩展 B 中:
public class UseEndpointsAction : IUseEndpointsAction
{
public int Priority => 1000;
public void Execute(IEndpointRouteBuilder endpointRouteBuilder, IServiceProvider serviceProvider)
{
endpointRouteBuilder.MapControllerRoute(
name: "ExtensionB",
pattern: "ExtensionB",
defaults: new { controller = "Default", action = "Index" });
}
}
有两个控制器,分别是“ExtensionA.Controllers.DefaultController”和“ExtensionB.Controllers.DefaultController”。
当客户端请求此 URL:“http://{domain}/ExtensionA”时,会收到以下错误:
处理请求时发生未处理的异常。 AmbiguousMatchException:请求匹配多个端点。火柴: ExtensionA.Controllers.DefaultController.Index (ExtensionA) ExtensionB.Controllers.DefaultController.Index (ExtensionB)
我想使用命名空间来解决它,这意味着将每个路由解析到特定的命名空间。 我在网上搜索并阅读了所有 MSDN 文档,但一无所获。任何帮助将不胜感激。
谢谢
【问题讨论】:
标签: c# asp.net-core-mvc