我在RESTful服务中使用PUT方法,其抛出错误405通过google更改了IIS配置设置,但不工作。
在有人把它标记为副本之前,我已经处理这个问题好几天了,下面的帖子中建议的程序都没有帮助:
方法1另一个方法
你可以找到更多的例子,他们中的大多数引用webdav模块(我没有声誉提供更多的参考)。即使许多报告说它解决了这个问题,出于某种原因,它并没有解决我,因为这个问题一直被张贴到SO,我想我不是唯一一个与这个问题作斗争的人。下面是我设法让DELETE、PUT、OPTIONS动词工作的方法(在express和IIS8.5中)。这就像在ProtocolSupportModule或web中添加一个新的映射处理程序一样简单。配置项:
<add name="OtherVerbsHandler" path="*" verb="PUT,DELETE,OPTIONS" modules="ProtocolSupportModule" />
对于其余的动词也不要使用该处理程序,因为它将无法加载静态文件(如果没有其他情况)。请注意,我是新的ASP。欢迎对我的解决方案提出任何有见地的意见。
EDIT:这个解决方法实际上并没有为我解决这个问题,因为DELETE请求不是由适当的控制器/动作处理的,总是返回200 OK。然而,摆弄其他API,我找到了解决方案。我只是错过了选项方法(总是返回200 OK),在这个其他API的情况下,我已经实现了一些预飞行请求。我仍然不知道为什么在错误输出中看不到这是问题,但是我的API现在工作得很好。
//This is necessary for browsers that isssue preflight requests
//Even with CORS enabled!
public HttpResponseMessage Options()
{
return Request.CreateResponse(HttpStatusCode.OK, "Options route activated.");
}
public HttpResponseMessage Delete(string project, string runId)
{
return Request.CreateResponse(HttpStatusCode.NotImplemented, "Delete route activated.");
}