Problème appelant l’api web asp.net DELETE de jqgrid

J’essaie d’invoquer la méthode DELETE de l’API ASP.net WEB à partir de jqGrid. Cependant, je reçois un message – “Statut d’erreur: ‘Méthode non autorisée’. Code d’erreur: 405” .

Voici les détails.

JQGrid code-

$("#employeeSalarysGrid").jqGrid('navGrid', '#employeeSalarysPager', { add: true, edit: true, del: true }, editOption, addOption, delOption); var delOption = { caption: "Delete", msg: "Delete selected record(s)?", bSubmit: "Delete", bCancel: "Cancel", mtype: "DELETE", url: 'http://localhost:50570/api/Test/' }; 

Méthode API Web ASP.NET:

 public HttpResponseMessage Delete(ssortingng id) { //code for processing delete request } 

J’ai tracé la demande envoyée à l’aide de Fiddler. Ci-dessous les détails de la demande:

 DELETE http://localhost:50570/api/Test HTTP/1.1 Accept: */* Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Referer: http://localhost:53055/Views/Test.aspx Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko Host: localhost:50570 Content-Length: 13 Connection: Keep-Alive Pragma: no-cache oper=del&id=2 

Veuillez noter que le paramètre Id = 2 est envoyé dans le corps de la requête et non dans la chaîne de requête, ce qui, à mon avis, devrait suffire.

S’il vous plaît laissez-moi savoir vos pensées sur la raison pour laquelle la méthode delete n’est pas invoquée.

Vous devez supprimer le corps de la demande DELETE et append id à la fin de l’URL. La réponse (ou cet ancien ) décrit les détails de la mise en œuvre. Je vous recommande ssortingctement de supprimer le préfixe http://localhost:50570 des URL que vous utilisez et utilisez par exemple url: '/api/Test/' au lieu de url: 'http://localhost:50570/api/Test/' . Voir ici pour les ressortingctions d’Ajax.

Comme vous utilisez un type simple (chaîne) comme paramètre de méthode, Web API ne peut pas router la demande. Définissez l’identifiant dans l’URI comme ceci – http://localhost:50570/api/Test/123 . Sinon, définissez le paramètre sur un type complexe (classe) et l’API Web commencera à acheminer correctement, en liant le corps au paramètre de méthode d’action.