如何在IIS Express和Web API中允许DELETE方法?

时间:2019-03-17 02:47:41

标签: asp.net-web-api web-api-testing iis-express-10

我正在尝试通过Fiddler向我的Web API服务发送删除请求,并返回405错误“方法不允许”。

我已经广泛阅读了有关在web.config中删除“ WebDAV”模块的信息以及类似的建议(无论如何,我的applicationhost.config中均未启用WebDAV),但是我没有尝试过。

我的服务当前正在IIS Express 10上运行(从Visual Studio启动)。我的web.config文件中确实有这个

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

我本以为verb="*"片段会允许DELETE,但似乎不起作用。

另一个说明-当我在Fiddler中检查响应时,在“安全性”标题下显示为Allow: GET, POST

我不确定在哪里设置“允许”参数(我是Web API的新手)。

任何帮助将不胜感激。请让我知道您还需要什么其他信息,我会添加它。

谢谢!

3 个答案:

答案 0 :(得分:1)

您可以在applicationHost.config文件夹中修改IIS Express %userprofile%\documents\IISExpress\config。要为无扩展名的Urls启用PUT和DELETE,请向下滚动到IIS Express applicationHost.config文件的底部,然后查找以<add name="ExtensionlessUrl-Integrated-4.0"...开头的处理程序条目。在“动词”属性中添加PUT和DELETE,以便“动词”属性看起来像:verb =“ GET,HEAD,POST,DEBUG,PUT,DELETE”

答案 1 :(得分:1)

只需创建一个新的webapi项目[targeting .net framework 4.7.1]

通过Fiddler,我可以直接对DELETE端点进行操作,而无需更改web.config。

请确保使用正确的端点,包括id参数。

例如http:localhost:xxxx/api/values/id //请输入ID,xxxx是端口号。

如果在没有http:localhost:xxxx/api/values的情况下使用id,则会得到相同的结果405 Method Not Allowed

希望这会有所帮助。

答案 2 :(得分:0)

像这样更新您的网络配置

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule"/> <!-- ADD THIS -->
    </modules>