【问题标题】:Web API Delete Method not workingWeb API 删除方法不起作用
【发布时间】:2012-10-26 06:55:07
【问题描述】:

调用 DELETE 方法 Web API 未到达服务器。在网上搜索类似的问题后,非对我有用。 下面是我的解决方案中的代码简介。

网络 API:

    [AuthorizeService]
    [HttpDelete]
    public HttpResponseMessage Delete(Int32 id)
    {
        String username = User.Identity.Name;
        this._clientDataManager.DeleteRestaurant(id,username);

        return new HttpResponseMessage(HttpStatusCode.OK);
    }

Ajax 调用:

$.ajax({
    url: 'localhost:53378/api/RestaurantWebAPI/1135',
    type: "DELETE",
    statusCode: {
        200: function (data) {
            //success
        }
    }, beforeSend: setHeader
});

Web.Config:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
    <validation validateIntegratedModeConfiguration="false" />
    <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>

感谢任何帮助。

【问题讨论】:

  • 您能否删除 AuthorizeService 属性进行试用并查看其是否可以访问?
  • @ancdev 您确定AuthorizeService 方面或过滤器不会阻止您的操作调用吗?
  • 我的问题是响应是 404 Not Found。这个属性执行一个简单的身份验证,没什么特别的。
  • @ancdev 和这个控制器的其余 HTTP 方法工作正常吗?正确的?我的意思是你在那里尝试过 GET 方法吗?
  • GET、POST、PUT 完美运行

标签: c# asp.net-mvc asp.net-web-api


【解决方案1】:

好的,它可以工作,但不知何故,这个解决方案让我有点困惑。 首先是解决方案,最终将以下内容添加到 WebApiConfig 文件中:

   config.Routes.MapHttpRoute(
       name: "DeleteApi",
       routeTemplate: "api/{controller}/Delete/{id}",
       defaults: new { name = RouteParameter.Optional }
   );

现在,当请求的类型设置为“DELETE”时,这不是 MVC 4 Web API 中的一项功能,用于将请求直接路由到 delete 方法吗?对此问题的任何澄清都非常受欢迎。

【讨论】:

    猜你喜欢
    • 2020-05-17
    • 2014-02-18
    • 2018-12-22
    • 2016-08-30
    • 2017-03-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    相关资源
    最近更新 更多