阿贾克斯帖子:405不允许的方法(Ajax Post: 405 Method Not Allowed

2019-07-29 18:58发布

在我的API控制器称为付款,我有以下方法:

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

在我的HTML页面我有:

$.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);
        }
    });

每当我火的帖子,我得到

"NetworkError: 405 Method Not Allowed - http://localhost:65396/api/payment/charge"

我在想什么?

谢谢。

UPDATE

这里的路由信息​​(默认)

 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 }
            );

Answer 1:

最有可能你的路由没有配置要调用的动作。 因此,请求在无处和ASP.NET Web API发送一个空白出消息“方法不允许”结束。

你能请更新你的路由的问题?


UPDATE

和我想象的一样! 要发送到http://localhost:65396/api/payment/charge ,而你需要发送到http://localhost:65396/api/payment -假设你的控制器被称为PaymentController

需要注意的是路由没有action



Answer 2:

原来我需要实现CORS支持。 http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/20/implementing-cors-support-in-asp-net-web-apis.aspx



Answer 3:

我有同样的问题,我的控制器。 这是唯一不同的是URL的结局。 添加“/”到“ HTTP://本地主机:65396 / API /支付/充电 ”末,帮助我



文章来源: Ajax Post: 405 Method Not Allowed