После недолгого разыска, я нашел эту запись в Интернете.
Оказывается, что предоставленный WSDL имел фрагмент вроде:
<wsdl:message name="someMessageRequest">
<wsdl:part name="parameters" element="ns0:someMessageRequest"/>
</wsdl:message>
<wsdl:message name="someMessageResponse">
<wsdl:part name="parameters" element="ns0:someMessageResponse"/>
</wsdl:message>
... SNIP ...
<soap:operation style="document" soapAction="someMessage"/>
<wsdl:input>
<soap:body use="literal" parts="parameters"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" parts="parameters"/>
</wsdl:output>
Поскольку для параметров запроса и ответа используется одно и то же имя, wsdl.exe не может его разрешить и умирает.
Мое исправление:
<wsdl:message name="someMessageRequest">
<wsdl:part name="parametersRequest" element="ns0:someMessageRequest"/>
</wsdl:message>
<wsdl:message name="someMessageResponse">
<wsdl:part name="parametersResponse" element="ns0:someMessageResponse"/>
</wsdl:message>
... SNIP ...
<soap:operation style="document" soapAction="someMessage"/>
<wsdl:input>
<soap:body use="literal" parts="parametersRequest"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" parts="parametersResponse"/>
</wsdl:output>
Теперь прокси создан.
Часть удовольствия от SoA заключается в том, что вы никогда не можете доверять WSDL, которые вам предоставлены для работы:)