2013-03-07 54 views
1

我可以通過/ api/set/id或/ api/set/archived /來獲取,但PUT無法正常工作。我的路線:請求的資源不支持HTTP mehod「Put」

 routes.MapHttpRoute(
      name: "SetId", 
      routeTemplate: "api/set/{id}", 
      defaults: new { controller = "Set", action = "getset" } 
     ); 

     routes.MapHttpRoute(
      name: "Set", 
      routeTemplate: "api/set/{action}/{id}", 
      defaults: new { controller = "Set", id = RouteParameter.Optional } 
     ); 

設置控制器:

 [HttpPut] 
     [AcceptVerbs("PUT")] 
     [ActionName("update")] 
     public HttpResponseMessage PutSet(Set set) 
     { 
     ... 
     } 

在提琴手我把原始對象從相應的GET請求:

http://localhost:24144/api/set/update 

,但我得到

「{」$ id「:」1「,」Message「:」請求的資源不支持htt方法'PUT'。「}」

爲什麼PUT不能正常工作?

編輯:我也嘗試過更新,首先路線有一個id爲可選,並在PUT方法去除動作的名稱。然後我試着通過PUT/api/set進行訪問,並得到相同的405錯誤 - PUT不受支持。

回答

1

也許這些動詞在web.config中沒有正確註冊?

<authorization> 
     <!-- General application authorization --> 
     <allow verbs="GET" users="*"/> 
     <allow verbs="PUT" users="*"/> 
     <allow verbs="POST" users="*"/> 
    </authorization> 
+0

只是嘗試這樣做(這些都沒有指定) - 似乎沒有工作。謝謝你的提示 – SB2055 2013-03-07 17:43:00

1

移動這條路線到您的路由配置文件的頂部:

routes.MapHttpRoute(
      name: "Set", 
      routeTemplate: "api/set/{action}/{id}", 
      defaults: new { controller = "Set", id = RouteParameter.Optional } 
     ); 

,並重新命名您的PUT方法來更新

[HttpPut]

public HttpResponseMessage Update(Set set) 
    { 
    ... 
    } 
相關問題