9

我使用的是Visual Studio 2013 RC版本中包含的ASP.NET 5 RC的属性路由。使用asp.net属性路由的根路径的默认路由

我想要的根路径/,导致规范/Home/Index路径,但我找不到一种方法来做到这一点只是属性路由。是否有可能,如果不是,如果我还使用OWIN SelfHost,我该如何做?换句话说,我在WebApp.Start<T>方法(其中T在启动时调用Configure(IAppBuilder)方法)手动设置我自己的HttpConfiguration类,并且不通过RouteTable.Routes对象。或者我应该通过RouteTable.Routes对象?我没有多少运气与当我试图...

编辑:这是我到目前为止已经试过:

// normal Web API attribute routes 
config.MapHttpAttributeRoutes(); 

config.Routes.MapHttpRoute(
    name: "DefaultWeb", 
    routeTemplate: "{controller}/{action}", 
    defaults: new { controller = "Home", action = "Index" } 
); 

第二试试下面看起来有点可疑,因为它不是明确我的HttpConfiguration对象是如何与静态RouteTable.Routes对象:

// normal Web API attribute routes 
config.MapHttpAttributeRoutes(); 

RouteTable.Routes.MapRoute(
    name: "DefaultWeb", 
    url: "{controller}/{action}", 
    defaults: new { controller = "Home", action = "Index" } 
); 

回答

26

您可以设置应用程序是这样的默认路由:

[Route("~/", Name = "default")] 
    public ActionResult Index() { 
     return View(); 
    } 
+0

我得到了“当前请求是采用以下操作方法之间的暧昧:” ......尝试这种时候。我将[RoutePrefix(“home”)]添加到我的控制器定义中,并将[Route]更改为[Route(“index”)]以消除歧义。 /(默认)和/ home/index都可以工作。 –

+2

我也得到了模棱两可的错误,并且模糊性指向了同一个控制器。我删除了上面显示的“[Route]”,现在它可以工作。 – HK1

0

对于任何使用.NET Core 1.x的人,您都需要这样做,以及使用Jay的上述答案。

在您的Startup.cs文件中,将此添加到您的Configure方法中。

app.UseMvcWithDefaultRoute();

然后,你想要作为默认的任何控制器动作,把属性[Route("", Name = "default")]