Служба WCF, получающая нулевые значения

#asp.net #wcf

#asp.net #wcf

Вопрос:

У меня есть новый веб-сервис, который я пытаюсь реализовать… когда я запускаю его в отладчике, функция, вызываемая в службе, останавливается на точке останова, которую я установил, но я замечаю, что значение равно null… Я сжег себя в последний день, пытаясь разобраться в этом.

Я приношу извинения, если я кажусь рассеянным или не даю достаточно информации … Я ценю любую помощь

Я также пробовал это с помощью Fiddler; он останавливается в точке останова, как указано выше.

Я думаю, что мой json может быть странным?

Вызов от клиента:

  var url = "http://localhost:35798/Service.svc/Test;
 var json = '{"name": "test"}';
 $.ajax({
            type: "GET",
            url: url,
            dataType: "json",
            processData: true,
            data: json,
            contentType: "application/json; charset=utf-8",
            success: function (data) {

                alert("Passed"   data.CheckFileResult);
            },
            error: function (data) {
                alert(data.d);
            }
        });
  

Служба:

 [OperationContract] 
[WebInvoke(Method="GET", ResponseFormat=WebMessageFormat.Json)] 
public string Test(string name)
 {
    return "hi";
 }
  

Конфигурация службы:

 <system.serviceModel>
  <behaviors>
    <endpointBehaviors>
      <behavior name="Site.Service1AspNetAjaxBehavior">
        <enableWebScript />
      </behavior>
      <behavior name="Site.ServiceAspNetAjaxBehavior">
        <enableWebScript />
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

  <services>
    <service name="Site.Service">
      <endpoint address="" behaviorConfiguration="Site.ServiceAspNetAjaxBehavior"
        binding="webHttpBinding" contract="Site.Service" />
    </service>
  </services>
</system.serviceModel>
  

Ответ №1:

Как насчет синтаксиса этой строки:

 var json = '{"name": "test"}'
  

Не должно ли это быть:

 var json = '{name: "test"}';
  

Редактировать: ваши первые две строки, похоже, немного не соответствуют imo. Попробуйте:

 var url = "http://localhost:35798/Service.svc/Test";
var json = "{name: 'test'}";
  

Комментарии:

1. Извините, я быстро копировал / вставлял; я пытался изменить json, но это все равно не сработало. Также я попробовал ваш пример json на jsonlint.com и ей это не понравилось. Однако спасибо!

Ответ №2:

Я выяснил это, используя ссылку на службу для подключения к методам, а затем я просмотрел запрос в fiddler и понял, что json действительно был искажен…Там было лишнее пространство

 '{ "name":"test"}'
  

Спасибо…