jQuery Ajax发布到WCF返回“错误请求”

时间:2011-12-08 03:38:25

标签: wcf jquery

我似乎无法得到这个。

我有这样的WCF服务;

    [OperationContract]
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    bool Test();

然后执行;

    public bool Test()
    {
        return true;
    }

然后是我的jQuery;

                jQuery.support.cors = true;
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8", 
                    dataType: "json",
                    url: "http://localhost:8732/Design_Time_Addresses/MyService/Service/mex/Test",
                    timeout: 2000,
                    success: function (data) {
                        alert(9);
                    },
                    error: function (xhr, status, error) {
                        alert(status);
                        alert(error);
                    }
                });

每次我打电话给我都会收到“错误请求”。如果我将URL改为此说“

http://localhost:8732/Design_Time_Addresses/MyService/Service/mex/Tesdt

我收到错误“未知”,所以我认为它正在寻找我的服务。

2 个答案:

答案 0 :(得分:0)

您的服务器方法中有ResponseFormat = WebMessageFormat.Json

然而,在您的AJAX调用中,dataType(您希望从服务器返回)是text

TLDR:

更改dataType: "text" ----> dataType: "json"

答案 1 :(得分:0)

您通常不应该将请求发送给" mex"端点,除非您将Web端点地址配置为该端点。如果您的webHttpBinding / webHttpBehavior端点位于http://localhost:8732/Design_Time_Addresses/MyService/Service,则您服务中的URI应该就是那个。

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    url: "http://localhost:8732/Design_Time_Addresses/MyService/Service/Test",
    timeout: 2000,
    success: function (data) {
        alert(9);
    },
    error: function (xhr, status, error) {
        alert(status);
        alert(error);
    }
});

检查该地址,如果它不起作用,请发布您的web.config和您的global.asax.cs(如果您正在定义任何路线)