2013-03-12 40 views
0

我想這樣的接入資源:mvc4網頁API路線sheme

 /api/adddevice/12345 

什麼這條路線是不正確的?

routes.MapRoute(
      name: "AddDevice", 
      url: "adddevice/{id}", 
      defaults: new { controller = "some controller", action = "adddevice", id = UrlParameter.Optional } 
    ); 


    public string AddDevice(int id) 
    { 
     return "Device " + id.ToString() + " succesfully added"; 
    } 

編輯

下面是錯誤的詳細信息:

 <MessageDetail> 
     No type was found that matches the controller named 'some controller'. 
    </MessageDetail> 

回答

3

你說你想要的網址是這樣的:

/api/adddevice/12345 

,但你的路由映射了這一點:

url: "adddevice/{id}", 

看看它如何不匹配?該映射在開始時沒有api/MapRoute()調用中聲明的URL必須匹配URL的全部(當然,主機部分除外)。從您輸入的網址中刪除/api/,或者將其添加到您映射的網址中。

順便說一句,routes.MapRoute()是MVC;對於WebApi,你需要config.Routes.MapHttpRoute()

+0

刪除API解決問題,但沒有添加) – NET 2013-03-12 16:57:43

+0

我期望默認情況下mvc框架添加了[api]來將api控制器從平常中分離出來 - 對我來說,當我追加[api]在此請求url時,行爲metod不可行sheme:url:「adddevice/{id}」 – NET 2013-03-12 17:00:49

+0

我不確定爲什麼這是一個驚喜;這些網址根本不匹配。他們甚至沒有相同數量的元素。您正在輸入以「ap​​i」開頭的內容,並且該路線映射正在尋找以「adddevice」開頭的內容。夠簡單。 「api」!=「adddevice」。 – anaximander 2013-03-12 17:03:11

1

你錯過了路由中的 'API',你似乎是使用MVC路由。

注意這需要被添加到WebApiConfig而不是RouteConfig:

config.Routes.MapHttpRoute(
       name: "AddDevice", 
       routeTemplate: "api/adddevice/{id}", 
       defaults: new { controller = "somecontroller", action = "adddevice", id = UrlParameter.Optional } 
       ); 
+0

那不適合我。 ....這裏我沒有使用[api]:routes.MapRoute( name:「Default」, url:「{controller}/{action}/{id}」, 默認值:new {controller =「PDF 「,action =」GetServiceInfo「,id = UrlParameter.Optional} );它的工作原理 – NET 2013-03-12 16:22:24

+0

我編輯了我的答案。 – 2013-03-12 16:45:15