【问题标题】:Ajax Post: 405 Method Not AllowedAjax 帖子:不允许使用 405 方法
【发布时间】:2012-06-10 15:19:01
【问题描述】:

在我的称为 Payment 的 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);
        }
    });

每当我触发 POST 时,我都会得到 ​​p>

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

我错过了什么?

谢谢。

更新

这是路由信息(默认)

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

【问题讨论】:

    标签: asp.net-web-api wcf-web-api http-status-code-405


    【解决方案1】:

    很可能您的路由未针对要调用的操作进行配置。因此,请求最终无处可去,并且 ASP.NET Web API 发送了一条空白消息“方法不允许”。

    您能否用您的路线更新问题?


    更新

    正如我所想!您正在发送到http://localhost:65396/api/payment/charge,而您需要发送到http://localhost:65396/api/payment - 假设您的控制器被称为PaymentController

    注意路由没有action

    【讨论】:

    • 我只是使用默认路由。我已经更新了问题。
    • 那我如何让它调用 Charge 方法呢?我将在此 API 控制器中使用其他 POST 方法。
    • 使用 RC 你可能做不到。在测试版中,您可以将action 添加到路线中,但我在推特上听说(我自己没有尝试过)现在无法完成。在路由中使用action 试试看是否有效。
    • 原来我需要实现 CORS 支持。我使用此链接作为指南。 blogs.msdn.com/b/carlosfigueira/archive/2012/02/20/…
    【解决方案2】:
    【解决方案3】:

    我的控制器也有同样的问题。 唯一不同的是 URL 的结尾。 最后将“/”添加到“http://localhost:65396/api/payment/charge”,这对我有帮助

    【讨论】:

      猜你喜欢
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 2020-07-04
      • 1970-01-01
      • 2019-03-25
      • 2012-04-30
      • 2023-02-15
      相关资源
      最近更新 更多