gpt4 book ai didi

ASP.NET Web API - 不允许使用 PUT 和 DELETE 动词 - IIS 8

转载 作者:行者123 更新时间:2023-12-03 04:25:21 24 4
gpt4 key购买 nike

我最近从 Visual Studio 2010 升级到 Visual Studio 2012 RC。安装程序还会安装 IIS 8 Express,Visual Studio 现在将其用作默认 Web 服务器。

IIS 8 阻止我使用 PUT 和 DELETE 动词的 WEB API 请求。 IIS 返回 405 错误,The requested resource does not support http method 'PUT' .

我知道人们过去对此有过疑问,并且 Stack Overflow 上有几条关于它的消息。对于 IIS 7 Express,解决方案是卸载 WebDav。不幸的是,我没有看到任何方法可以使用 IIS 8 做到这一点。

我尝试从 applicationhost.config 中编辑 WebDav 部分,但这没有帮助。例如我删除了 <add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />来自配置文件。

我在这上面花了太长时间。必须有一个简单的方法来启用 PUT 和 DELETE 吗?

最佳答案

好的。我终于弄清楚了这件事的真相。您需要跳过一些步骤才能使 PUT 和 DELETE 动词在 IIS8 中正常工作。事实上,如果您安装 VS 2012 的候选版本并创建一个新的 WEB API 项目,您会发现示例 PUT 和 DELETE 方法立即返回 404 错误。

要通过 Web API 使用 PUT 和 DELETE 动词,您需要编辑 %userprofile%\documents\iisexpress\config\applicationhost.config 并将动词添加到 ExtensionlessUrl 处理程序,如下所示:

更改此行:

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

至:

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

除上述内容外,您还应确保 WebDAV 不会干扰您的请求。这可以通过注释掉 applicationhost.config 中的以下行来完成。

<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />
<add name="WebDAVModule" />
<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />

另请注意,默认的 Web API 约定是您的方法名称应与调用的 HTTP 谓词相同。例如,如果您要发送 HTTP 删除请求,则默认情况下您的方法应命名为“Delete”。

关于ASP.NET Web API - 不允许使用 PUT 和 DELETE 动词 - IIS 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10906411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com