【发布时间】:2015-04-10 13:01:42
【问题描述】:
我正在使用 Visual Studio 2015 在 ASP .NET 5 中构建一个 Web 应用程序。我创建了一个包含数据访问、业务、服务和用户界面层的解决方案。 我已经在用户界面层引用了服务。由于在 MVC 6 中,Web API 和 MVC 都属于同一个项目模板,因此必须有两个不同的服务层和 UI 或具有不同控制器的同一个项目就足够了。?
在 UI 项目中,我还取消了 Startup.cs 中以下几行的注释
services.AddWebApiConventions();
routes.MapWebApiRoute("DefaultApi", "api/{controller}/{id?}");
在运行项目时,主页正常,但是当我单击主页中的链接时,网址会像这样发生变化
http://localhost:45075/api/Home
它给出了错误页面
AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied.
Sample.Services.Controllers.HomeController.Index
Sample.Services.Controllers.HomeController.About
Sample.Services.Controllers.HomeController.Contact
Sample.Services.Controllers.HomeController.Error
我的理解是,由于我启用了 Web Api 约定,它会转到具有路由属性的服务的 Home Controller
[Route("api/[controller]")]
如果是这样,如何通过在路由中渲染视图时指定命名空间或一些约束来解决此冲突。
我是初学者。如果我错了,请纠正我。
【问题讨论】:
-
请尝试在每个帖子中提出一个问题,这样可以更轻松地提供有用的答案。话虽如此,您需要使用约定或显式映射,而不是两者兼而有之。
标签: asp.net-mvc asp.net-web-api asp.net-core asp.net-core-mvc