无扩展 REST WCF 服务为 PUT 方法返回 http 405

Posted

技术标签:

【中文标题】无扩展 REST WCF 服务为 PUT 方法返回 http 405【英文标题】:Extensionless REST WCF service returns http 405 for PUT method 【发布时间】:2011-12-27 04:02:37 【问题描述】:

我有一个 WCF REST 服务在 VS2008 (3.5) 编写的 IIS6 下本地运行。

svc 文件的 asp.net ISAPI 映射配置为接受所有动词 我已启用通配符脚本映射以允许无扩展名 URI 通过 url 重写与服务一起使用。

因此,使用指定的 .svc 文件对其余服务运行 PUT 可以正常工作。 对省略的 svc 执行相同操作会返回 405。

http://thehost/therestmethod = 405 http://thehost/theservice.svc/therestmethod = 200

所有的 url 编写版本都可以使用 PUT 是唯一的例外!在无扩展版本上尝试 PUT 时,我点击了 url rewrite ok 但之后出现错误,所以我知道重写成功了。

我尝试过使用 WCF 跟踪,但这没有记录错误。好像还没到那一步?!?!

【问题讨论】:

【参考方案1】:

取自here:

HTTP 动词:虽然大多数防火墙和 Web 客户端允许 HTTP GET 和 POST 动词,但其中一些不支持 PUT、DELETE 和其他动词。要启用此类不受支持的动词的调用,通常的做法是在 POST 请求上使用 X-HTTP-Method-Override HTTP 标头来指定您希望调用的方法。 XHttpMethodOverride 示例描述了如何实现此功能。

我想在 IIS url 重写/允许的动词检查代码中有些地方不太一致。 希望这会有所帮助。

【讨论】:

由于没有涉及防火墙,这将消除这一点,而且包含 svc 文件也可以正常工作

以上是关于无扩展 REST WCF 服务为 PUT 方法返回 http 405的主要内容,如果未能解决你的问题,请参考以下文章

Angular 4 POST 到 WCF REST 服务返回 NULL 响应

IIS 7.5 + 为 RESTFul 服务启用 PUT 和 DELETE,无扩展

将 REST 方法添加到 WCF 数据服务?

WCF REST 服务返回 405:jQuery AJAX GET 不允许的方法

向 WCF + Autofac 无扩展服务添加身份验证

IIS7.5上的REST服务的Put操作发生HTTP Error 405.0 - Method Not Allowed 解决方法