2014-03-12 31 views
0

我創建了一個新的基於MVC4的Webapi項目,並在App start文件夾中有幾個文件。我在RouteConfig.cs注意到文件使用Webapi的新MVC4項目包含WebApiConfig和RouteConfig

 routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

而且在WebApiConfig.cs

 config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
從我可以告訴他們都做了大致相同的事情,除了一個

現在使用.MapRoute和其他.MapHttpRoute的參數在符號上略有不同。這兩種不同的途徑在應用程序的不同方面?他們需要在兩個地方嗎?如果是/不是優先?

我發現 Difference between WebApiConfig.cs and RouteConfig.cs

然而,所有這說的是一個是Asp.Net路線,另一種是對的WebAPI的路線,但我不認爲在這兩個路線類型之間使用的區別。

回答

1

這對我來說很奇怪。我只是在Visual Studio 2013中創建一個新的Web API項目,我WebApiConfig.cs如下所示:

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

公告不存在{}行動部件的routeTemplate。這是因爲Web API中的操作由與請求一起使用的HTTP動詞確定。

MVC使用RouteConfig中配置的控件和操作。

+0

奇怪的是,我創建了兩個或三個單獨的項目,並且您剪切和粘貼的內容是我所看到的......我將其用於解釋控制器中{id}組件的名稱routetemplate ie ... class MyTestController - >方法MyTestMethod被稱爲http:// localhost/mytestcontroller/mytestmethod現在我想知道我的調用是如何工作的當routetemplate有一個動作定義在它! – DRobertE

+0

默認情況下,在Web API中,方法由用於發送請求的HTTP動詞確定(如我在原始文章中所述)。也就是說,ApiController上的方法將是Get,Post,Put和Delete。該id會根據情況傳遞給該方法。如果你做一個文件 - >新建 - > Web API項目,然後打開ValuesController(假設VS2013和最新的模板),你會看到它。 –

+0

@CraigW。他瞄準.net 4.0,你的目標是.net 4.5 – Robert