使用VS2013和IIS Express 8在RESTful服务URL中使用PUT方法错误代码405(方法不允许)

时间:2015-07-08 10:32:35

标签: rest visual-studio-2013 iis-8

我正在使用PUT作为RESTful服务中的方法,其投掷错误405已经通过谷歌中的所有帖子更改了IIS配置设置但无法正常工作。

1 个答案:

答案 0 :(得分:0)

在某人将其标记为副本之前,我已经处理了这个问题了几天,并且以下帖子中没有建议的程序有帮助:

Method 1

Yet another method

您可以找到更多示例,其中大部分都是指webdav模块(我没有声誉可以提供更多参考资料)。即使很多人报告说它解决了这个问题,但由于某些原因它并没有解决我的问题,而且由于这个问题一直在发布,所以我想我不是唯一一个解决这个问题的人。这是我设法让DELETE,PUT,OPTIONS动词工作的方式(在express和IIS8.5中)。它就像为ProtocolSupportModule或web.config术语添加新的映射处理程序一样简单:

<add name="OtherVerbsHandler" path="*" verb="PUT,DELETE,OPTIONS" modules="ProtocolSupportModule" />

不要对剩余的动词使用该处理程序,因为它无法加载静态文件(如果没有别的话)。请注意,我是ASP.NET的新手,欢迎任何有关我的解决方案的深刻见解。

编辑:这种解决方法实际上并没有为我解决,因为DELETE请求不是由正确的控制器/操作处理,总是返回200 OK。然而,摆弄其他API我发现了解决方案。我刚刚错过了Options方法(总是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.");
 }