c# – Web API 2 DELETE方法始终返回500

我的Email Web API 2控制器上有一个操作:
[Authorize]
[RoutePrefix("api/Email")]
public class EmailController : ApiController {

    //...

    [HttpDelete]
    [Route("Remove/{id}")]
    private void Remove(int id) {
        _repo.Remove(id);
    }
}

当我使用DELETE http:// localhost:35191 / api / Email / Remove / 35571(或通过任何其他方法)从fiddler调用操作时,我得到一个500返回的通用IIS错误页面,它没有提供有关错误的信息.

似乎错误发生在我的操作被调用之前,因为在操作中设置断点会导致断点永远不会被命中.

是否需要某种配置才能在IIS(Express)中使用DELETE方法

我试过在我的web.config中明确允许DELETE:

<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" />

但无济于事.

解决方法

你必须公开暴露的方法
[HttpDelete]
[Route("Remove/{id}")]
public void Remove(int id) {
    _repo.Remove(id);
}

如果这不起作用,那么您可能需要删除WebDav(web.config):

<system.webServer>
   <modules>
      <remove name="WebDAVModule" />
   </modules>
   <handlers>
      <remove name="WebDAV" />
   </handlers>
</system.webServer>

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...