0

ASP.NET2.0WebサイトプロジェクトにWebサービスリファレンスがあります。コードを変更せずに、サービスのステージングバージョンと本番バージョンを切り替えられるようにしたいと思います。

しかし、私はそれをきれいな方法で行う方法を見ていません。他のサービスURLを指すようにweb.configを変更できることは知っていますが、それでも私のコードはいずれかの参照にハードコーディングされていませんか?

この投稿を見ましたが、プロキシクラスをどのように編集しますか?クラスで「定義に移動」すると、編集できるクラスに移動しませんが、オブジェクトブラウザです...プロキシを生成するためにwsdl.exeユーティリティを実行する必要がありますか?編集できるクラスはありますか?

編集#1:サービスをインスタンス化して呼び出すために使用しているコードは次のとおりです。

Dim service As New Swan.MagellanLeadSheetService()
Dim response As Swan.MagellanLeadSheetResponse = service.Foo(stuffToSendToService)

編集#2: web.configのappSettings領域にすでにURLエンドポイントアドレスがあるので、本番環境にデプロイするときにその設定を編集して、本番環境のURLを指すようにすることはできますか?そんなに簡単ですか?StagingとProductionのプロキシクラス間の変更を壊す可能性について心配していましたが、Productionに変更を展開する前にそれらを解決する必要があると思います。

4

2 に答える 2

2

次の記事では、参照プロパティを変更し、web.configファイルにキーを追加し、アプリケーションコードでこのキーを参照することにより、Webサービス参照を動的にする方法について説明します。

記事リンク

基本的に、2つのバージョンのweb.configファイルがあり、異なるURLが定義された本番環境とステージングがあります。コードは一意の場所を指しますが。

アップデート:

ここで、次の行の前に、web.configの内容に応じてservice.URLを変更する必要があります。

Dim response As Swan.MagellanLeadSheetResponse = service.Foo(stuffToSendToService)
于 2012-10-09T22:39:06.280 に答える
1

まず最初に、プロジェクトにWeb参照を追加する方法について説明します。

方法:Web参照を追加および削除する

次に、Webサービスクラス(から派生するプロキシクラスSoapHttpClientProtocol)のインスタンスには、urlというプロパティが必要です。このプロパティを使用すると、実行時にステージングまたは本番環境からasmxに切り替えることができます。

CountryService service = new CountryService();
service.Url = "http://foo/bar.asmx";

詳細:WebClientProtocol.Urlプロパティ

于 2012-10-09T22:02:14.020 に答える