IIS 7.5 错误 405 不支持 PUT 方法

Posted

技术标签:

【中文标题】IIS 7.5 错误 405 不支持 PUT 方法【英文标题】:IIS 7.5 error 405 the PUT method not supported 【发布时间】:2015-10-14 22:33:25 【问题描述】:

我在 Windows 7 64 位的 IIS 7.5 上有 Web api WCF RESTfull 服务器。 我正在尝试通过 PUT 方法更新一条记录,但出现错误 405。我尝试在我的 Web.Config 中允许 PUT 动词,如下所示:

  <system.webServer>
<modules>
  <remove name="WebDAVModule" />
</modules>
<handlers>
    <remove name="WebDAV" />
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
        <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Execute" preCondition="integratedMode,runtimeVersionv4.0" />
        <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Execute" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
        <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Execute" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <remove name="OPTIONSVerbHandler" />
  <remove name="TRACEVerbHandler" />
</handlers>

....

如您所见,我还禁用了 WebDAV,但仍然得到 405。 有人有建议吗?

【问题讨论】:

尝试通知 iis 在所有模块中应用删除 WebDAV,修改这些行: 我想类似的问题和这个sintax工作得很好。这里有一个关于 runAllManagedModulesForAllRequests 的问题:***.com/questions/11048863/… 谢谢,但没用。 所有动词都会出现这种情况,还是可以执行 GET 调用?我检查了我的 web.config,它几乎等于你的,唯一的区别是我指定了动词而不是“”,就像这样: 我不认为这是这里的问题,但你可以试试。 我已经尝试过特定的动词,GET 和 POST 确实有效。也许我的问题更基本。在我的 IIS 中,我将服务器添加为站点并设置了绑定(我可以毫无问题地使用 GET 和 POST)我向服务器发送和接收 JSON,是否应该添加 MIME 类型或其他内容?... 我从来不需要配置 MIME,但可以看看。我在我的书签中发现这个链接可能会有所帮助,尽管我认为你已经尝试过直接在 IIS 上配置:evolutionarydeveloper.blogspot.com.br/2012/07/… 【参考方案1】:

尝试从 IIS 的 GUI 中手动删除 webdav 模块。 1) 转到 iis。 2) 转到相应的站点。 3)打开“处理程序映射” 4) 选择 WebDav。右键单击它并删除它。

注意:这也会更新您的 web 应用程序的 web.config。

【讨论】:

以上是关于IIS 7.5 错误 405 不支持 PUT 方法的主要内容,如果未能解决你的问题,请参考以下文章

MVC 4. IIS 7.5 PUT 返回 405

Restful WCF IIS 7.5 405 方法不允许间歇

IIS 7.5、Web 服务和 HTTP 405 错误

REST - HTTP 状态 405;方法不允许;请求方法“PUT”不支持错误

WebAPI IIS PUT和DELETE请求失败 405

HTTP 状态 405 - 不支持请求方法“PUT”