2

我正在尝试通过 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="*"件作品会允许删除,但它似乎不起作用。

另一个注意事项 - 当我检查 Fiddler 中的响应时,在 Security 标题下它说:Allow: GET, POST.

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

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

谢谢!

4

3 回答 3

2

刚刚通过创建一个新的 webapi 项目复制了这一点 [ targeting .net framework 4.7.1]

通过 Fiddler,我可以在不更改 web.config 的情况下点击 DELETE 端点。

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

eg http:localhost:xxxx/api/values/id// 请包括 id 和 xxxx 是端口号。

如果http:localhost:xxxx/api/values不使用id,我会得到相同的结果405 Method Not Allowed

希望这可以帮助。

于 2019-03-17T06:48:17.257 回答
2

您可以修改文件夹applicationHost.config中的 IIS Express。%userprofile%\documents\IISExpress\config要为无扩展 URL 启用 PUT 和 DELETE,请向下滚动到 IIS Express applicationHost.config 文件的底部并查找以:<add name="ExtensionlessUrl-Integrated-4.0".... 在“verb”属性中添加 PUT 和 DELETE,因此“verb”属性看起来像:verb="GET,HEAD,POST,DEBUG,PUT,DELETE"

于 2019-03-17T05:13:39.203 回答
0

像这样更新您的网络配置

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule"/> <!-- ADD THIS -->
    </modules>
于 2019-03-17T05:24:46.437 回答