在VS2013和IIS Express 8环境下,restful服务URL中的PUT方法错误码405(method no



我在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.");
 }

相关内容

最新更新