Asp.net mvc ASP.NET Core 3.1 MVC返回含糊不清的UsMatchException,服务器错误500

Asp.net mvc ASP.NET Core 3.1 MVC返回含糊不清的UsMatchException,服务器错误500,asp.net-mvc,asp.net-core,routes,Asp.net Mvc,Asp.net Core,Routes,我正在使用ASP.NET Core 3.1 MVC和区域 这个问题发生在使用IIS Express的开发中,我甚至还没有达到可以部署到实时(IIS)服务器的程度。服务器在启动过程结束时抛出错误500 例外情况: Microsoft.AspNetCore.Routing.Matching.AmbiguousMatchException:请求匹配多个终结点 匹配项: FleetLogix.Intranet.Areas.Maps.Controllers.HomeController.Index(Fle

我正在使用ASP.NET Core 3.1 MVC和区域

这个问题发生在使用IIS Express的开发中,我甚至还没有达到可以部署到实时(IIS)服务器的程度。服务器在启动过程结束时抛出错误500

例外情况:

Microsoft.AspNetCore.Routing.Matching.AmbiguousMatchException:请求匹配多个终结点

匹配项:

FleetLogix.Intranet.Areas.Maps.Controllers.HomeController.Index(FleetLogix.Intranet)
FleetLogix.Intranet.Areas.Admin.Controllers.HomeController.Index(FleetLogix.Intranet)
FleetLogix.Intranet.Controllers.HomeController.Index(FleetLogix.Intranet)

在Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.ReportDumbility(CandidateState[]CandidateState)
位于Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.ProcessFinalCandidates(HttpContext HttpContext,CandidateState[]CandidateState)
在Microsoft.AspNetCore.Routing.Matching.DefaultEndpointSelector.Select(HttpContext HttpContext,CandidateState[]CandidateState)中选择
在Microsoft.AspNetCore.Routing.Matching.DfaMatcher.MatchAsync(HttpContext HttpContext)
在Microsoft.AspNetCore.Routing.Matching.DataSourceDependentMatcher.MatchAsync(HttpContext HttpContext)
在Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext HttpContext)
在Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext上下文)
位于Microsoft.AspNetCore.HttpsPolicy.httpsreditionmiddleware.Invoke(HttpContext上下文)
位于Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext上下文)

这是我的路线:

app.UseEndpoints(endpoints =>
{
    endpoints.MapAreaControllerRoute(
        name: "AdminArea",
        areaName: "Admin",
        pattern: "Admin/{controller=Home}/{action=Index}/{id?}");

    endpoints.MapAreaControllerRoute(
        name: "AnchorArea",
        areaName: "Anchor",
        pattern: "Anchor/{controller=Home}/{action=Index}/{id?}");

    endpoints.MapAreaControllerRoute(
        name: "DashboardArea",
        areaName: "Dashboard",
        pattern: "Dashboard/{controller=DriverBehaviour}/{action=Index}/{id?}");

    endpoints.MapAreaControllerRoute(
        name: "MapsArea",
        areaName: "Maps",
        pattern: "Maps/{controller=Home}/{action=Index}/{id?}");

    endpoints.MapAreaControllerRoute(
        name: "ReportGroupsArea",
        areaName: "ReportGroups",
        pattern: "ReportGroups/{controller=Home}/{action=Index}/{id?}");

    endpoints.MapAreaControllerRoute(
        name: "MaintenanceArea",
        areaName: "Maintenance",
        pattern: "Maintenance/{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllers();
    endpoints.MapRazorPages();

    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});
我没有做什么特别的事。我见过一些修复程序,它们说要为方法添加一个属性,例如:

[HttpGet("{id:int}")]
但这是对具有相同配置文件的基本索引方法的抱怨。通往它们的道路就是要区别开来

如何修复此问题?

路径“
/
”或“
/Home/Index
”请求匹配多个端点。可以将“面积”属性添加到“分隔”。所有的测试和工作

  • [Area(“Admin”)]
    添加到
    /Area/Admin/HomeController

      [Area("Admin")]
      public class HomeController : Controller
      {
           public IActionResult Index()
           {
               return View();
           }
      }
    
  • [Area(“地图”)]
    添加到
    /Area/Maps/HomeController

     [Area("Maps")]
     public class HomeController : Controller
     {
         public IActionResult Index()
         {
             return View();
         }
     }
    
  • 现在您有了这些映射:

    • localhost:44388/admin
      =>/Area/admin/HomeController/Index Action
    • localhost:44388/maps
      =>/Area/maps/HomeController/Index Action
    • localhost:44388/
      =>/HomeController/Index操作
    路径“
    /
    ”或“
    /Home/Index
    ”请求匹配多个端点。可以将“面积”属性添加到“分隔”。所有的测试和工作

  • [Area(“Admin”)]
    添加到
    /Area/Admin/HomeController

      [Area("Admin")]
      public class HomeController : Controller
      {
           public IActionResult Index()
           {
               return View();
           }
      }
    
  • [Area(“地图”)]
    添加到
    /Area/Maps/HomeController

     [Area("Maps")]
     public class HomeController : Controller
     {
         public IActionResult Index()
         {
             return View();
         }
     }
    
  • 现在您有了这些映射:

    • localhost:44388/admin
      =>/Area/admin/HomeController/Index Action
    • localhost:44388/maps
      =>/Area/maps/HomeController/Index Action
    • localhost:44388/
      =>/HomeController/Index操作

    远离我的办公桌,但我知道大多数控制器上都指定了[Area(xyz)]。午餐回来后我会检查:)好的,如果你有任何问题,请不要犹豫,尽管问。大多数人都有这个属性,AdminController没有。已经添加了它,以及缺少的有效的[Authorize(Policy=“Requirexyz”)]。我还有一些问题,但它们是值得提出新问题的不同问题。谢谢你的帮助。:)远离我的办公桌,但我知道大多数控制器上都指定了[Area(xyz)]。午餐回来后我会检查:)好的,如果你有任何问题,请不要犹豫,尽管问。大多数人都有这个属性,AdminController没有。已经添加了它,以及缺少的有效的[Authorize(Policy=“Requirexyz”)]。我还有一些问题,但它们是值得提出新问题的不同问题。谢谢你的帮助。:)