簡體   English   中英

Web API刪除方法不起作用

[英]Web API Delete Method not working

調用DELETE方法Web API無法到達服務器。 在網上搜索了類似的問題后,對我沒有幫助。 以下是我的解決方案代碼簡介。

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

感謝任何幫助。

好的,它可以正常工作,但是解決方案使我有些困惑。 首先是解決方案,最后將以下內容添加到WebApiConfig文件中:

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

現在,這不是MVC 4 Web API中的一項功能,當請求的類型設置為“ DELETE”時,該請求可以直接路由到delete方法嗎? 對此事的任何澄清都是高度贊賞的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM