c# - 为什么这些路线会发生冲突?
问题描述
我有一个控制器和两种方法,它们都有不同的路由。.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)
解决方案
尝试使用 HttpGet 属性中的路由
像这样
[HttpGet, Route("portal/")]
推荐阅读
- php - 如何使用从 laravel 中的数组中获取的各种术语进行 mysql 关联查询
- json - 使用 JSON Body on Rule 调用 REST API Business Central 时解组输入时出错
- python - YouTube 视频上传器错误 ssl.SSLWantWriteError:操作未完成(写入)(_ssl.c:2472)
- python - Mypy 无法从 TypedDict.get(Optional[key], str) 推断类型
- javascript - 如何在一个元素出现在屏幕上后立即更改它的 css 属性
- excel - 用户表单和动态查看表格,这可能吗?
- flutter - Flutter 资产:pubspec.yaml:一个依赖可能只有一个来源
- python-3.x - 使用 selenium 和 python 从 web 表中读取时结果为空
- postgresql - 使用 Azure PostgreSQL 的 DevOps
- git - Bitbucket 分支创建是从其他分支复制文件