c# - Web API 2 DELETE 方法总是返回 500

标签 c# asp.net-web-api2 iis-express http-delete

我对我的 Email Web API 2 Controller 执行了一个操作:

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

但无济于事。

最佳答案

您必须将公开的方法设为public:

[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>

关于c# - Web API 2 DELETE 方法总是返回 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26220831/

相关文章:

azure - 如何调试 B2C 权限不足的 Azure 应用程序?

visual-studio - 在 IIS Express 中创建虚拟目录

visual-studio - 无法启动IIS Express Web服务器-VS 2015社区

asp.net - 如何修复 VS2013 和基本 ASP.NET 网站上显示的 SSL "page can' 错误?

c# - 在 Selenium 中启用扩展启动 firefox

c# - 不存在的目录/文件 Web API(不是 Controller )的自定义错误页面

c# - 如何使用 selenium webdriver C# 获取元素的样式属性值

javascript - vb.net web api $.ajax 响应不是 json 对象

c# - 在C#中,事件是否保留对回调方法所在的整个类的引用?

c# - 如果不存在则创建应用程序配置文件 C#