Передача нулевых параметров в службу WCF - PullRequest
4 голосов
/ 13 июня 2011

Мне любопытно, как клиентское приложение не из .NET службы WCF может сигнализировать указанному методу, что оно не хочет указывать значение для данного параметра (после чего служба принимает значение по умолчанию),Другими словами, как приложение может передать параметр null службе WCF?

Ответы [ 3 ]

3 голосов
/ 13 июня 2011

Он может исключить параметр из документа SOAP (при условии, что конечная точка HTTP), предполагая, что это разрешено.

Точно, если это разрешено / как это должно быть сделано, зависит от того, как генерируется XSD.

Они могут управляться аргументами атрибута [DataMember].

Если [DataMember(IsRequired=true)] MSDN , то в xml потребуется содержать этот элемент (я думаю, minOccurs будет равен 1), и если элемент может иметь значение nillable (nillable = true, в зависимости от типа данных)

Если [DataMember(EmitDefaultValue=true)] MSDN , тогда будет элемент, если элемент имеет значение по умолчанию при сериализации элемента.

3 голосов
/ 13 июня 2011

В дополнение к ответу Этана вы также можете установить свойство IsRequired в атрибуте DataMember:

[DataMember(IsRequired=false)]

Если установлено значение false, DataContractSerializer установит для свойства значение по умолчанию (ноль, для любых типов, допускающих значение NULL), если это свойство отсутствует в сообщении SOAP. Иногда клиентам SOAP на других языках проще опустить свойство, а не отправлять <myProperty xsi:nil="true"/>

3 голосов
/ 13 июня 2011

Если вы общаетесь со службой с использованием SOAP (или какого-либо другого стандарта на основе XML), вы можете указать правильное значение, используя: <myProperty xsi:nil="true"/>. То, как клиентское приложение не .NET генерирует значение nil, будет зависеть от используемой вами платформы.

...