使用属性路由升级到 MVC5 后默认路由不起作用
Default Route does not work after upgrading to MVC5 with Attribute Routing
从具有 AttributeRouting.net 的 MVC4 升级到具有 MVC5 属性路由的 MVC5 后,我似乎无法使默认路由正常工作,因此 http://server
默认为 http://server/home/index
。直接浏览 /home/
或 /home/index
即可。
对于路由配置,我有这个:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
HomeController 声明如下所示:
// Controller
[RoutePrefix("home")]
public class HomeController : MvcControllerBase
....
// Action
[HttpGet, Route, Route("index")]
public ActionResult Index()
{
.....
我不确定还有什么地方可以检查。我已经注释掉了全局中的所有内容并禁用了所有 WebActivator 激活的项目。
和想法?响应是 404,没有抛出异常。
啊..明白了!
基于 Kiran 对 : Specify default controller/action route in WebAPI using AttributeRouting
的回答
我将 HomeController 更改为:
// Controller
public class HomeController : MvcControllerBase
....
// Action
[HttpGet, Route, Route("home"), Route("home/index")]
public ActionResult Index()
{
....
而且我摆脱了 MVC 配置默认设置。
从具有 AttributeRouting.net 的 MVC4 升级到具有 MVC5 属性路由的 MVC5 后,我似乎无法使默认路由正常工作,因此 http://server
默认为 http://server/home/index
。直接浏览 /home/
或 /home/index
即可。
对于路由配置,我有这个:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
HomeController 声明如下所示:
// Controller
[RoutePrefix("home")]
public class HomeController : MvcControllerBase
....
// Action
[HttpGet, Route, Route("index")]
public ActionResult Index()
{
.....
我不确定还有什么地方可以检查。我已经注释掉了全局中的所有内容并禁用了所有 WebActivator 激活的项目。
和想法?响应是 404,没有抛出异常。
啊..明白了!
基于 Kiran 对 : Specify default controller/action route in WebAPI using AttributeRouting
的回答我将 HomeController 更改为:
// Controller
public class HomeController : MvcControllerBase
....
// Action
[HttpGet, Route, Route("home"), Route("home/index")]
public ActionResult Index()
{
....
而且我摆脱了 MVC 配置默认设置。