我正在尝试通过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的新手)。
任何帮助将不胜感激。请让我知道您还需要什么其他信息,我会添加它。
谢谢!
答案 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>