Visual Studio 2008 не генерирует прокси-класс веб-службы Reference.cs? - PullRequest
0 голосов
/ 30 апреля 2009

Я только что перенес проект из формата Visual Studio 2005 в Visual Studio 2008. В этом проекте интенсивно используются веб-службы.

Мы используем наш собственный родительский класс для создаваемых прокси-классов (Reference.cs), которые генерирует Visual Studio.

Я добавил новую веб-ссылку, используя Visual Studio 2008, и он не генерировал прокси-класс, а просто файл reference.map. Похоже, что он строит их на лету. Это не сработает для моих нужд, так как мне нужно изменить код, чтобы он соответствовал нашей среде.

Обратите внимание, что это веб-ссылки, а не сервисные ссылки.

Кто-нибудь знает способ заставить VS2k8 работать как 2k5 для меня?

Ответы [ 2 ]

1 голос
/ 30 апреля 2009

После недолгого разыска, я нашел эту запись в Интернете.

Оказывается, что предоставленный 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, которые вам предоставлены для работы:)

1 голос
/ 30 апреля 2009

Возможно, вам следует использовать svcutil.exe или wsdl.exe для создания файлов классов прокси.

...