Ajax Post: 405 Méthode Non Autorisée
dans mon Controller API appelé Payment, j'ai la méthode suivante:
[HttpPost]
public HttpResponseMessage Charge(Payment payment)
{
var processedPayment = _paymentProcessor.Charge(payment);
var response = Request.CreateResponse(processedPayment.Status != "PAID" ? HttpStatusCode.ExpectationFailed : HttpStatusCode.OK, processedPayment);
return response;
}
dans ma page HTML j'ai:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://localhost:65396/api/payment/charge",
data: $('#addPayment').serialize(),
dataType: "json",
success: function (data) {
alert(data);
}
});
Chaque fois que je lance le POST, j'obtiens
"NetworkError: 405 Method Not Allowed - http://localhost:65396/api/payment/charge"
Ce qui me manque?
je vous Remercie.
UPDATE
Voici les informations de routage (par défaut)
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
3 réponses
très probablement votre routage n'est pas configuré pour que l'action soit invoquée. Par conséquent, la demande se termine en nulle part et ASP.NET L'API Web envoie un message vide "méthode non autorisée".
pouvez-vous s'il vous plaît mettre à jour la question avec votre routage?
UPDATE
comme je le pensais! Vous envoyez à l' http://localhost:65396/api/payment/charge
alors que vous devez envoyer à http://localhost:65396/api/payment
- en supposant que votre contrôleur est appelé PaymentController
.
Notez que la route n'a pas action
.
il S'avère que j'avais besoin d'implémenter le support CORS. http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/20/implementing-cors-support-in-asp-net-web-apis.aspx
j'ai eu le même problème avec mon contrôleur. La seule chose qui est différente est la fin de L'URL. Ajouter " / "à"http://localhost:65396/api/payment/charge" à la fin, qui m'a aidé