属性路由未命中控制器内的操作方法

时间:2017-02-15 07:10:58

标签: c# asp.net-mvc asp.net-mvc-routing url-routing attributerouting

我在我的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

1 个答案:

答案 0 :(得分:0)

您的启动路径中可能存在订购问题。确保按此顺序调用:

  1. AreaRegistration.RegisterAllAreas();
  2. routes.MapMvcAttributeRoutes();
  3. 任何基于会议的路线