Asp.NET Web API - 405 - 不允许用于访问此页面的HTTP动词 - 如何设置处理程序映射

Bar*_*art 95 asp.net iis asp.net-mvc iis-7 asp.net-web-api

我使用ASP.NET Web API编写了REST服务.我正在尝试发送HttpDelete请求,但是我收到以下错误:

405 - 不允许用于访问此页面的HTTP动词

我认为我接近解决方案,我发现我应该启用IIS远程管理,转到Handler Mappings部分并将DELETE动词添加到适当的位置......但问题是有很多不同的位置列表......(就像这里:http://www.somacon.com/p126.php).

我应该编辑哪一个?其中很少没有扩展,例如"ExtensionUrlHandler-Integrated-4.0",我添加了DELETE动词,但它仍然不起作用......

修改那个只是在黑暗中拍摄,所以我应该修改不同的位置吗?如果是这样,哪一个?或者还有什么我应该做的?

相同的Web服务在我的本地服务上工作得很好,所以我猜问题是远程IIS ...

问候

gia*_*lli 330

您不需要卸载WebDAV,只需将这些行添加到web.config:

<system.webServer>
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

  • 这应该是接受的答案imho,因为它是本地解决方案而不是全局解决方案. (48认同)
  • "你真的救了我的命" - 突然间,我的客户似乎并不那么糟糕. (25认同)
  • 这适用于我的ASP.NET Core 2.0 Web Api (4认同)
  • 这是在明天早上一个巨大的演示之前为我提出的.你刻意挽救了我的生命. (3认同)
  • 很好的答案.我同意这应该是公认的答案.这让我感觉比从我们的网络服务器上完全卸载WebDAV要好得多. (3认同)
  • 这是一个比公认的解决方案容易得多的解决方案。它也不会使用 WebDAV 模块弄乱服务器上任何应用程序的状态。谢谢你。 (2认同)

Dar*_*rov 27

导致此错误的常见原因是WebDAV.确保卸载它.

  • giacomelli在下面的答案应该被标记为正确的这个问题; 它是一个本地解决方案,不需要您卸载WebDav. (6认同)
  • 禁用无济于事,您必须卸载它. (3认同)

小智 17

更改您的Web.Config文件,如下所示

 <system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV"/>
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
<remove name="OPTIONSVerbHandler"/>
<remove name="TRACEVerbHandler"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)


小智 14

更改您的Web.Config文件,如下所示.它会像魅力一样.

在节点中<system.webServer>添加下面的代码部分

<modules runAllManagedModulesForAllRequests="true">
  <remove name="WebDAVModule"/>
</modules>
Run Code Online (Sandbox Code Playgroud)

添加后,您的Web.Config将如下所示

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule"/>
    </modules>
    <httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    </customHeaders>
    </httpProtocol>
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

  • 如果有人复制粘贴解决方案,我没有进行投票,只是一个评论. (3认同)

Beh*_*lem 10

我遇到了这个问题,我解决了以下问题:

  1. 打开 IIS
  2. 选择后端站点

    在此处输入图片说明

  3. 在功能视图中:打开处理程序映射

在此处输入图片说明

  1. 在处理程序映射窗口中,查找 WebDAV

在此处输入图片说明

  1. 在编辑模块映射中,打开请求限制

在此处输入图片说明

  1. 在此处输入图片说明

  • 这没有用。它破坏了整个 .Net CORE 站点。不得不回。 (5认同)
  • 它的解决方案太糟糕了。布洛克整个网站。 (2认同)

小智 7

检查你的web.confiq文件”

<modules>        
        <remove name="WebDAVModule" />    
    </modules> 
      <handlers>
                <remove name="WebDAV" />
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
Run Code Online (Sandbox Code Playgroud)