Jak zmusić WCF do automatycznego generowania WSDL z wymaganymi parametrami metody (minoccurs = „1”)?
Podczas korzystania z WCF i OperationContracts zdefiniowałem następującą metodę:
[OperationContract]
[FaultContract(typeof(ValidationFault))]
[FaultContract(typeof(FaultException<ExceptionDetail>))]
int DoSomething(int someId, MyComplexType messageData);
Gdy zostanie to przetłumaczone na WSDL przez środowisko wykonawcze WCF, kończy się na minoccurs = "0" wymienionym dla parametrów someId i messageData (a następnie zgłasza błąd wykonania, jeśli brakuje tych parametrów).
Jeśli wygeneruję proxy za pomocą SoapUI, otrzymam coś, co wygląda tak:
<com:DoSomething>
<!--Optional-->
<com:EventId>1</com:EventId>
<!--Optional-->
<com:myComplexType >
<com:id>1</com:id>
</com:myComplexType >
</com:DoSomething>
Pole id w MyComplexType jest oznaczane atrybutem DataMemeber przy użyciu IsRequired = "true", a zatem jest ujawnione jako obowiązkowe.
Jest oczywiste, że WSDL określa, że parametr jest opcjonalny, gdy nie jest, ale nie widzę żadnego oczywistego sposobu na oznaczenie OperationContract, aby wymusić na WCF rozpoznanie i ujawnienie tych parametrów zgodnie z wymaganiami.
Jestem nieco zaskoczony, że nie wydaje się oczywistym sposobem na to (czytanie intellisense / msdn / google). Albo idę na oślep i nie zauważam czegoś oczywistego.
Jakieś wskazówki?