Переданный параметр является нулевым в стороне WCF - PullRequest
0 голосов
/ 01 февраля 2010

Я вызываю простой метод на стороне WCF с использованием Jquery.

$.ajax({
         type: "POST",
         url: "MyService.svc/TestJSON",
         data:'{"BikeId":"2"}',
         //data: '{"BikeId":"'+ id + '"}',                 
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         success: function(msg) {
             alert(msg);
         },
         error: GetFailedMessage
     });
     function GetFailedMessage(msg) {
         alert('Error message. ' + msg.status + ' ' + msg.statusText);
     }
 });

Мой простой TestJSON - это [OperationContract]

public string TestJSON(string id)
{
    Bikes b = new Bikes();
    b.Description = "blah blah";
    b.Name = "DMX100";
    b.Make = "2010";
    b.ID = id;
    string bikeJson = JsonConvert.SerializeObject(b);
    return bikeJson;
}

Я знаю, что этот метод вызывается с помощью точки останова, но параметр "id" равен нулю. Что мне здесь не хватает?

Ответы [ 2 ]

2 голосов
/ 01 февраля 2010

Ваша служба ожидает параметр с именем id, и на стороне клиента вы отправляете значение, используя BikeId в качестве имени параметра.

Либо имя параметра в подписи TestJSON метода:

public string TestJSON(string BikeId) {/*...*/}

Или измените объект data на стороне клиента:

$.ajax({
  type: "POST",
  url: "MyService.svc/TestJSON",
  data: '{"id":"'+ id + '"}', // <------
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    alert(msg);
  },
  error: GetFailedMessage
});
1 голос
/ 01 февраля 2010

Я догадываюсь немного, но, возможно, сервис выводит имя вашего элемента данных как 'id', когда браузер передает его как 'BikeId'?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...