ASP.Net Core和ExtCore.Mvc库中的“ AmbiguousMatchException:请求匹配多个端点”错误

时间:2020-06-06 14:05:19

标签: c# asp.net-core-mvc

我正在使用ExtCore.Mvc库,当我在2个不同的扩展名中有2个具有相同名称的控制器时出现问题。 这是我的代码:

在ExtensionA中:

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" });
    }
}

在ExtensionB中:

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文档,却一无所获。任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

分别将控制器重命名(并将controller = "Default"更改为DefaultControllerADefaultControllerB

或者您可以使用areas

或者尝试像实施here一样实施某种NamespaceConstraintAttribute