Como posso forçar o WCF a gerar automaticamente WSDLs com parâmetros de método necessários (minoccurs = “1”)?

Ao usar o WCF e o OperationContracts, tenho o seguinte método definido:

    [OperationContract]
    [FaultContract(typeof(ValidationFault))]
    [FaultContract(typeof(FaultException<ExceptionDetail>))]
    int DoSomething(int someId, MyComplexType messageData);

Quando isso é traduzido para um WSDL pelo tempo de execução do WCF, ele acaba com minoccurs = "0" listado para os parâmetros someId e messageData (e, subsequentemente, gera um erro de tempo de execução se esses parâmetros estiverem ausentes).

Se eu gerar um proxy usando SoapUI eu recebo algo parecido com isto:

  <com:DoSomething>
     <!--Optional-->
     <com:EventId>1</com:EventId>
     <!--Optional-->
     <com:myComplexType >
        <com:id>1</com:id>
     </com:myComplexType >
  </com:DoSomething>

O campo id em MyComplexType é marcado com o atributo DataMemeber usando IsRequired = "true" e, portanto, é exposto como obrigatório.

Obviamente, é bastante enganoso para o WSDL especificar que um parâmetro é opcional quando não é, mas não consigo ver nenhuma maneira óbvia de marcar o OperationContract para forçar o WCF a reconhecer e expor esses parâmetros conforme necessário.

Estou um pouco perplexo, não parece uma maneira óbvia de fazer isso (lendo intellisense / msdn / google). Ou eu estou ficando cego e ignorando algo óbvio.

Alguma pista?

questionAnswers(2)

yourAnswerToTheQuestion