WSDL.exeを使用してWebサービスプロキシを生成する際の異なるURLへのデフォルト設定
-
02-07-2019 - |
質問
プロジェクトには、タイプを共有する多数の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パラメータが利用可能になったため、 それぞれに個別にappsettingurlkeyを指定するためのソリューション 識別されたWebサービス。
wsdl.exeでこれが不可能な場合、私は何を提案しますか? wsdl.exeが出力する生成されたコードを更新したくないので、UrlをWebサービスの各インスタンスに渡してアプリケーション全体を処理したくありません。
解決
生成されたプロキシクラスは部分的なクラスなので、私の解決策は、プロキシごとに異なる設定を明示的に読み取る別の(生成されていない)コードファイルに独自のコンストラクタを追加することです。
他のヒント
エリヤの答えを補足するために、私が彼に与えたメールの答えを以下に示します。
XMLがこのテキストボックスにうまく貼り付けられなかったため、ブログを作成する必要がありました。 http://www.rickdoes.net/blog/archive/2008/09/29/wsdl-shared-types-and-configuration.aspx
ああ、オーバーロードされたコンストラクターで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がある場合、それを使用して http:// MyServer / を置き換えますMyProxy.csのサブ文字列。 appSettingが存在しない場合、wsdl.exeで提供されるパスを使用します(例:appSettingまたは http://MyServer/WebService1.asmx (appSettingを使用しない場合)。
正しい方向を示してくれたリック・キーナーに感謝します。