0

プロジェクトには、タイプを共有する多数のWebサービスがあります。

簡単にするために、2つのWebサービスを使用して説明します。

http://MyServer/WebService.asmxのWebService1 http ://MyServer/WebService.asmx のwebService2

これら2つのサービスのプロキシを生成するとき、私は次のことを使用します。

wsdl / sharetypes http://MyServer/WebService1.asmx http://MyServer/WebService2.asmx / appsettingurlkey:WebServiceUrl / namespace:MyNamespace /out:MyProxy.cs

問題は、appsettingurlkeyがプロキシファイル内の各Webサービスで同じであるということです。複数のappsettingurlkeyパラメーターを指定できるようにしたい。これはどのように達成されますか?/ sharetypesパラメーターが使用可能になったので、識別されたWebサービスごとにappsettingurlkeyを指定するためのソリューションがあるはずです。

これがwsdl.exeで不可能な場合、私に何を提案しますか?wsdl.exeが出力する生成されたコードを更新したくないし、URLをWebサービスの各インスタンスに渡すアプリケーション全体を調べたくありません。

4

3 に答える 3

4

生成されるプロキシクラスは部分クラスであるため、私の解決策は、プロキシごとに異なる設定を明示的に読み取る、異なる(生成されていない)コードファイルに独自のコンストラクターを追加することです。

于 2008-09-28T10:59:57.537 に答える
1

Elijah 自身の回答を補足するために、私が彼に送った電子メールの回答を次に示します。

XML がこのテキスト ボックスにうまく貼り付けられなかったため、ブログに記載する必要がありました

于 2008-09-29T17:34:00.920 に答える
0

ああ、Url を渡すオーバーロードされたコンストラクターを使用して別の部分クラスを作成する代わりに、wsdl.exe に次の追加パラメーターを指定すると、問題が解決します...

wsdl /sharetypes http://MyServer/WebService1.asmx http://MyServer/WebService2.asmx /appsettingurlkey:WebServiceUrl /namespace:MyNamespace /out:MyProxy.cs /appsettingurlkey:BaseSoapUrl /appsettingbaseurl: http://MyServer/

web.config に BaseSoapUrl appSetting がある場合、それを使用して、MyProxy.cs のhttp://MyServer/サブ文字列を置き換えます。appSetting が存在しない場合は、wsdl.exe で指定されたパスが使用されます (例: appSetting を使用する場合は {BaseSoapUrl}/WebService1.asmx、appSetting を使用しない場合はhttp://MyServer/WebService1.asmx ) 。 .

私を正しい方向に導いてくれた Rick Kierner に感謝します。

于 2008-09-29T16:35:26.457 に答える