2015-12-30 91 views
5

我有一個WebAPI應用程序用於數據庫中的一些RESTful操作。它工作的很好,但我想匹配一個路由與根URL。例如,我想轉到網站的根目錄並查看一些動態生成的有用信息。WebAPI路由到根URL

目前,我已將其設置爲遵循api/{controller}/{action}的標準約定,但如何在顯示此信息時導航到根而不是像api/diagnostics/all之類的東西?

基本上我想要的是,當用戶導航到根網址,我想這一請求TestController.Index()

路線我在WebApiConfig.cs文件中的以下設置:

public static void Register(HttpConfiguration config) 
{ 
    // Web API routes 
    config.MapHttpAttributeRoutes(); 

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

    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new { id = RouteParameter.Optional, controller = "Test" } 
    ); 
} 

這就是我的TestController.cs的樣子:

[RoutePrefix("api")] 
public class TestController : ApiController 
{ 

    [Route("TestService"), HttpGet] 
    public string Index() 
    { 
     return "Service is running normally..."; 
    }   
} 
+2

你的問題是不太清楚請詳細 – Kayani

回答

4

基本上我想是,當用戶導航到根URL,我想 向請求到TestController.Index路線()

在這種情況下,確保你沒有裝飾了你的TestController.Index動作與此屬性:

[Route("TestService")] 

因此,這裏是你可能的TestController怎麼看起來像:

[RoutePrefix("api")] 
public class TestController : ApiController 
{ 
    [HttpGet] 
    public string Index() 
    { 
     return "Service is running normally..."; 
    } 
} 

而現在只需轉到//api

+0

謝謝Darin。我的生活現在完成了。 – hyde

4

您可以爲WebApiConfig.cs中的默認URL添加路由。這裏的地方根URL映射到方法HomeController.Index()一個例子:

config.Routes.MapHttpRoute(
    name: "Root", 
    routeTemplate: "", // indicates the root URL 
    defaults: new { controller = "Home", action = "Index" } // the controller action to handle this URL 
); 
+0

這並沒有爲我工作:/ – hyde

+0

請看更新的問題上面。 – hyde

+0

感謝隊友..工作就像一個魅力! –

3

你也可以簡單地使用([Route("")]):

public class TestController : ApiController 
{ 

    [Route(""), HttpGet] 
    public string Index() 
    { 
     return "Service is running normally..."; 
    }   
}