HttpDelete无法在Web Api中工作

时间:2016-06-30 10:52:12

标签: c# asp.net-web-api webdav http-delete

我正在尝试在我的HttpDelete中创建Web Api服务,但它无效并给我以下错误

Handler "WebDAV" has a bad module "WebDAVModule" in its module list

我的服务代码实现如下

   [HttpDelete]
    public string DeleteItem(long itemId)
    {
        try
        {
            // Implementation goes here
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

我使用Postman方法

使用HTTPDelete插件使用以下http请求
  http://localhost:85/RM.Services/api/Item/DeleteItem?itemId=12 

我使用以下配置在web.config

解决此问题
<system.webServer>
    <modules>
        <remove name="WebDAVModule" />
    </modules>
    <handlers>
        <remove name="WebDAV" />
    </handlers>
</system.webServer>

还在web.config

中尝试以下设置
  <system.webServer>
      <validation validateIntegratedModeConfiguration="false" />
      <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule" />
      </modules>
  </system.webServer>

但是对我来说没有任何效果会出现同样的错误

我尝试使用以下步骤从WebDav删除IIS

  1. 转到Control Panel然后Programs and Fetures然后Turn windows features on or off
  2. 然后Internet Information Services然后World Wide Web Services然后Common HTTP Features
  3. 然后删除WebDav Features
  4. 在这种情况下,我收到了404错误

    这个问题有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

Web API中,您不应该在您的网址中添加操作DeleteItem,此处的路由与MVC不同。您应该使用HTTPDelete方法拨打电话并使用此网址:

http://localhost:85/RM.Services/api/Item/12 

答案 1 :(得分:1)

我从Web.config

删除了以下配置
<modules>
    <remove name="WebDAVModule" />
</modules>`

并保持

<handlers>
    <remove name="WebDAV" />
</handlers>

现在一切正常