При использовании WCF и OperationContracts я определяю следующий метод:
[OperationContract]
[FaultContract(typeof(ValidationFault))]
[FaultContract(typeof(FaultException<ExceptionDetail>))]
int DoSomething(int someId, MyComplexType messageData);
Когда это переводится в WSDL с помощью среды выполнения WCF, она заканчивается с minoccurs = "0", указанным для параметров someId и messageData (и впоследствии выдает ошибку времени выполнения, если эти параметры отсутствуют).
Если я создаю прокси-сервер с помощью SoapUI, я получаю что-то похожее на это:
<com:DoSomething>
<!--Optional-->
<com:EventId>1</com:EventId>
<!--Optional-->
<com:myComplexType >
<com:id>1</com:id>
</com:myComplexType >
</com:DoSomething>
Поле id в MyComplexType помечено атрибутом DataMemeber с использованием IsRequired = "true" и поэтому отображается как обязательное.
Очевидно, что для WSDL достаточно указать, что параметр является необязательным, если это не так, но я не вижу никакого очевидного способа разметки OperationContract, чтобы заставить WCF распознавать и подвергать эти параметры по мере необходимости.
Я немного озадачен, нет очевидного способа сделать это (читая intellisense/msdn/google). Или я буду слепым и не замечаю ничего очевидного.
Любые подсказки?