我在我的MVC5应用程序中使用属性路由,它运行正常。当我尝试创建一个区域并在其中的控制器上放置属性路由时,它返回404。
我知道,要在Area中启用属性路由,我必须使用[RouteArea("Area Name Here")]
并且还必须在我的RouteConfig类中添加routes.MapMvcAttributeRoutes();
。我做了所有这些并设计了我的控制器:
[RouteArea("Client")]
[RoutePrefix("Client")]
public class ClientController : Controller
{
#region Properties
private readonly string apiUrl = ConfigurationManager.AppSettings["apiUrl"];
#endregion
#region Constructor
public ClientController()
{
}
#endregion
#region Action Methods
[HttpGet, Route("create")]
public ActionResult Index()
{
--logic here
}
#endregion
}
当我使用路由http://localhost:26189/Client/create
运行应用程序时,我能够点击构造函数而不是Index方法。有趣的是,如果我删除属性[HttpGet, Route("create")]
并尝试此路由http://localhost:26189/Client/Index
,它将会触及Index方法。
我正在浏览这些链接但未找到确切修复: https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/#route-areas
答案 0 :(得分:0)
您的启动路径中可能存在订购问题。确保按此顺序调用:
AreaRegistration.RegisterAllAreas();
routes.MapMvcAttributeRoutes();