2009-04-30 17 views
0

Visual Studio 2005形式のプロジェクトをVisual Studio 2008に移植しました。このプロジェクトは、消費するWebサービスを大量に使用しています。Visual Studio 2008はWebサービスReference.csプロキシクラスを生成していませんか?

Visual Studioが生成する生成されたプロキシクラス(Reference.cs)に対して独自のカスタム親クラスを使用します。

Visual Studio 2008を使用して新しいWeb参照を追加しましたが、それはプロキシクラス(reference.mapファイル)を生成しませんでした。たぶんそれは、それらをオンザフライで構築するようです。私のフレームワークに合うようにコードを修正する必要があるので、これは私のニーズにはうまくいかないでしょう。

注:これはサービス参照ではなくWeb Referencesです。

VS2k8を私のために2k5のように動作させる方法を知っている人はいますか?

答えて

1

おそらくsvcutil.exeまたはwsdl.exeを使用してプロキシクラスファイルを生成する必要があります。

+0

svcutilは、.NET 3.0およびそれ以降のスタイルのプロキシのを生成します。私はまだwsdl.exeが生成する古い2.0スタイルが必要です。 – FlySwat

+1

wsdl.exeを試しましたか? –

+0

あなたはどう思いますか? – FlySwat

1

ちょっとしゃがみた後、私はインターネット上でpostを見つけました。それは、要求と応答パラメータの両方に同じ名前を使用しているため、wsdl.exeはそれを解決できないと死ぬ

<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は次のようにスニペットを持っていたことが判明します。

マイ修正:

<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のあなたが動作するように提供されている信頼ことはできないということです:)

関連する問題