首页 > 解决方案 > 为什么这些路线会发生冲突?

问题描述

我有一个控制器和两种方法,它们都有不同的路由。.NET 抱怨这两条路线存在冲突。

这些是方法:

   [Route("portal/")]
    [HttpGet("{*slug}")]
    public IActionResult Portal(string slug)
    {
      var session = HttpContext.Get<LoggableEntities>(_context);
      ViewData["CurrentUser"] = session?.User;
      ViewData["CurrentAdmin"] = session?.Admin;

      ViewData["id"] = _context.Application.First().Id;
      ViewData["slug"] = slug;
      ViewData["Page"] = "Home/Index";
      ViewData["ProjectName"] = _projectNameOptions.Value;
      ViewData["app"] = "portal";
      return View();
    }


    [Route("")]
    [HttpGet("{*slug}")]
    public IActionResult PublicSite(string slug)
    {
      var session = HttpContext.Get<LoggableEntities>(_context);
      ViewData["CurrentUser"] = session?.User;
      ViewData["CurrentAdmin"] = session?.Admin;

      ViewData["id"] = _context.Application.First().Id;
      ViewData["slug"] = slug;
      ViewData["Page"] = "Home/Index";
      ViewData["ProjectName"] = _projectNameOptions.Value;
      ViewData["app"] = "public_site";
      return View();
    }

这是我得到的错误:

AmbiguousActionException:匹配多个操作。以下操作匹配路由数据并满足所有约束: MyProject.Controllers.HomeController.Portal (MyProject) MyProject.Controllers.HomeController.PublicSite (MyProject)

标签: c#.netasp.net-mvcroutes

解决方案


尝试使用 HttpGet 属性中的路由

像这样

[HttpGet, Route("portal/")]

推荐阅读