【问题标题】:"AmbiguousMatchException: The request matched multiple endpoints" error in ASP.Net Core and ExtCore.Mvc libraryASP.Net Core 和 ExtCore.Mvc 库中的“AmbiguousMatchException:请求匹配多个端点”错误
【发布时间】: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


    【解决方案1】:

    将您的控制器重命名(并将controller = "Default")分别重命名为DefaultControllerADefaultControllerB

    或者你可以使用areas

    或者尝试实现某种NamespaceConstraintAttribute 就像here 一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多