2013-03-07 55 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) 
    { 
    ... 
    } 
相关问题