我正在開發一個帶有最新.NET Framework和C#的Web Api 2服務。在同一個控制器上,GET和POST可以工作,但PUT不需要
我有這些方法的控制器:
public IEnumerable<User> Get()
{
// ...
}
public User Get(int id)
{
// ...
}
public HttpResponseMessage Post(HttpRequestMessage request, User user)
{
// ...
}
public void Put(int userId, User user)
{
// ...
}
這是WebApiConfig
類:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
當我嘗試做api/Users/4
一個PUT我得到一個錯誤,告訴我,這只是允許GET。這是我做Put時的迴應:
HTTP/1.1 405 Method Not Allowed
Cache-Control: no-cache
Pragma: no-cache
Allow: GET
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcVWljMTguSUNcU291cmNlc1xSZXBvc1xWaWEgQ29nbml0YVxNYXR0XHNyY1xNYXR0LlNvY2lhbE5ldHdvcmsuV2ViLkFwaVxhcGlcVXNlcnNcMQ==?=
X-Powered-By: ASP.NET
Date: Thu, 04 Sep 2014 10:04:26 GMT
Content-Length: 68
{"Message":"The requested resource does not support the method http 'PUT'."}
你知道我爲什麼得到這個錯誤嗎?
_「一個錯誤告訴我,它只允許GET」_ - 顯示** actual **錯誤。或者說,研究它。 – CodeCaster 2014-09-04 08:58:44
我已更新我的問題。 – VansFannel 2014-09-04 10:10:51
您是否將PUT動詞映射到IIS/Web.config中的ExtensionlessUrlHandler(它應該在那裏默認情況下我認爲,但檢查很好)。 – 2014-09-04 11:57:50