0

当我试图向我的 POST 请求时WCF service,我无法POST the service request并且can't get response.

我正在使用WebHttpBinding和我WCF service is hosted in Windows service的 withPORT 8181

WCF服务方法:

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/{cstid}/{deptid}/get/customer/?cstname={cstname}", 
    BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json)]
Customer CustomerGet(string cstid, string deptid, string cstname);

jQuery POST 方法

jQuery.ajax({
    type: 'POST',
    url: 'http://localhost:8181/mysite/e48/91/get/customer/?',
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    processData: false,
    success: function (data) {
        alert(data);  // not getting anything  :(
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert('Error :' + textStatus);
    }
});

谁能告诉我为什么我无法调用此服务以及如何解决此问题?

提前致谢!

4

2 回答 2

0

您的 UriTemplate:

/{cstid}/{deptid}/get/customer/?cstname={cstname}

你的 jQuery 网址:

/e48/91/get/customer/?

看起来您缺少cstname,因此运行时的值将为空,因为查询字符串参数不需要匹配 UriTemplate。您没有显示您的实现,但我猜您查找的Customer是接受 null,但没有找到实际实例而只是返回 null。

于 2011-06-24T14:36:48.513 回答
0

由于您的 UriTemplate 是

 UriTemplate = "/{cstid}/{deptid}/get/customer/?cstname={cstname}",

您至少应该为 {cstname} 传递一个参数。例如,试试这个:

jQuery.ajax({
type: 'POST',
url: 'http://localhost:8181/mysite/e48/91/get/customer/?',
data: { cstname: "nunu" },
dataType: 'json',
contentType: "application/json; charset=utf-8",
processData: false,
success: function (data) {
    alert(data);  // not getting anything  :(
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
    alert('Error :' + textStatus);
}});

在我看来,将 WCF Web Http 服务用于 WebGet 操作以外的任何事情都比它的价值更麻烦。

于 2011-06-25T03:46:57.803 回答