wcf rest возвращает объект, но свойства равны нулю - PullRequest
0 голосов
/ 23 января 2012

Просто пытаюсь получить небольшое демо, работающее для отдыха.У меня есть библиотека классов домена, консольное приложение и проект службы wcf.

Интерфейс [ServiceContract] находится в библиотеке классов домена:

[ServiceContract]
public interface IService1
{
  [OperationContract]
  [WebGet]
  CompositeType GetDataUsingDataContract(string id);
}

Реализация находится в службе wcfприложение (шаблон Visual Studio):

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class Service1 : IService1
{
  public CompositeType GetDataUsingDataContract(string id)
  {
    if (id != null)
    {
      return new CompositeType() { StringValue = id, BoolValue=true };
    }
    return null;
  }
}

Когда я правильно связываю это в IIS, оно работает просто отлично:
http://test123/Service1.svc/GetDataUsingDataContract?id=42
выводит: {"d": {"__ type": "CompositeType: #Domain "," BoolValue ": true," StringValue ":" 42 "}}

Затем я написал получателю:

static void Main(string[] args)
{
  var factory = new ChannelFactory<IService1>(new WebHttpBinding(), new EndpointAddress("http://test123/Service1.svc"));
  factory.Endpoint.Behaviors.Add(new WebHttpBehavior());
  var service = factory.CreateChannel();
  CompositeType result = service.GetDataUsingDataContract("42");
}

Это компилируется и запускается, но свойстваРезультатом CompositeType являются null и false.Сериализация не прошла должным образом.Я использовал fiddler, чтобы проверить правильность http-вызова, и это точно так же, как я делаю это вручную с браузером.Когда я изменяю параметр «42» на ноль, он также дает мне объект CompositeType вместо нуль.Fiddler показывает {"d": null}, как и ожидалось.

Я не в курсе!

Обновление
Код для CompositeType

[DataContract]
public class CompositeType
{
  [DataMember]
  public bool BoolValue { get; set; }

  [DataMember]
  public string StringValue { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...