jQuery.POST: вызов службы WCF не вызывается! - PullRequest
0 голосов
/ 24 июня 2011

Поскольку я пытаюсь сделать POST-запрос к моему WCF service, я не могу POST the service request и can't get response.

Я использую WebHttpBinding и мой WCF service is hosted in Windows service с PORT 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);
    }
});

МожетКто-нибудь, пожалуйста, дайте мне знать, почему я не могу позвонить в эту службу и как мне решить эту проблему?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 25 июня 2011

Поскольку ваш 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 для чего-либо, кроме операций WebGet, является более сложной задачей, чем оно того стоит.

0 голосов
/ 24 июня 2011

Ваш UriTemplate:

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

Ваш URL-адрес jQuery:

/e48/91/get/customer/?

Похоже, вы пропустили cstname, поэтому значение во время выполнения будет нулевым, поскольку строка запросапараметры не обязательны для соответствия UriTemplate.Вы не показываете свою реализацию, но я предполагаю, что вы посмотрите, что Customer принимает ноль, но затем не находит фактический экземпляр и просто возвращает ноль.

...