【发布时间】:2021-01-09 19:30:21
【问题描述】:
我有一个控制器和两个方法,它们都有不同的路由。 .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)
【问题讨论】:
-
问题在于门户的 slug 需要是
[HttpGet("portal/{*slug}")]而不是[HttpGet("{*slug}")]
标签: c# .net asp.net-mvc routes