- PR -

WebServiceとロードバランサー

1
投稿者投稿内容
hal
常連さん
会議室デビュー日: 2004/02/17
投稿数: 29
投稿日時: 2004-08-23 17:57
お世話になります。

当方asp.net(c#)にてWebアプリケーションを開発しています。
質問させて下さい。
今回WebServiceで他サブシステムからデータ参照出来る仕組みにしようと思い、サービスを作成してからVisualStadio.Netの「Web参照の追加」で他サブに参照「http://ロードバランサーURL/〜.asmx」を追加しようとしたところ、以下のエラーが発生してWSDLがダウンロード出来ませんでした。

+++++++++++++++++++++++++++++++++++++++++++++++++
以下のファイルを からダウンロードできません。
http://ロードバランサーURL:ポート番号/〜.asmx?wsdl
+++++++++++++++++++++++++++++++++++++++++++++++++

上記の通り、当方の環境としてロードバランサーを使ったサーバの振り分けを行っているのですがそこが怪しいのかなと思い、Web参照の指定を
「http://直のサーバ名:ポート番号/〜.asmx」
としたところ、正常にWeb参照が追加されました。

ロードバランサー経由でWeb参照を追加する事は出来ないのでしょうか?
Web参照の追加でロードバランサーのURLしか指定していないのに、エラーメッセージにはポート番号が付加されている部分が不可解なのですが…。

はっきりとした回答でなくても、ヒント、アドバイス等がありましたらぜひよろしくお願いします。以上です。
hal
常連さん
会議室デビュー日: 2004/02/17
投稿数: 29
投稿日時: 2004-09-06 18:39
お世話になります。

自己レスです。
ブラウザから『http://ロードバランサーURL/〜.asmx?wsdl』でwsdlを参照したところ、参照できたのですが、なぜかこの段階で<soap:address location>が下記のように『http://ロードバランサーURL:ポート番号/〜.asmx』となっていました。

<soap:address location="http://〜:8937/〜.asmx" />

ここで既にポート番号が付加されているのがおかしくて正常にwsdlがダウンロード出来ないのだろうかと思い(この際なぜポート番号が付加されるかは置いておいて)なんとかこのwsdl自体を修正しようと考えているのですが、サーバ(.NetFramework)内の何処でwsdlを定義しているのかがさっぱりわかりません。
WebServiceが含まれているWebプロジェクトのdllに取り込まれてしまっているのでしょうか?
VisualStadioで自動生成していまっている為か、実際のモジュールがどうなっているのかよくわかりません。

この件に関して自力で色々調査してはいるのですが、正直手詰まりです。
「レスしようにも情報量が少ないよ」と思われるのは重々承知していますが、根本的に間違っているとのご指摘でも何でも良いのでアドバイスよろしくお願いします。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-09-06 19:07
>「http://直のサーバ名:ポート番号/〜.asmx」
> としたところ、正常にWeb参照が追加されました。

プロジェクトのWeb参照は直のサーバ名を参照するとして、
実行時の参照を
http://ロードバランサーURL:ポート番号/〜.asmx
にすればよいのでは?
(WebサービスのインスタンスのUrlプロパティ)


[ メッセージ編集済み 編集者: todo 編集日時 2004-09-06 20:01 ]
hal
常連さん
会議室デビュー日: 2004/02/17
投稿数: 29
投稿日時: 2004-09-09 19:48
引用:

プロジェクトのWeb参照は直のサーバ名を参照するとして、
実行時の参照を
http://ロードバランサーURL:ポート番号/〜.asmx
にすればよいのでは?



お世話になります。
todoさん、アドバイスありがとうございました。
なのですが、プロジェクトのWeb参照からロードバランサー経由のURLにする必要があってその方法では出来ませんでした(汗)

当方のWebServiceをCallするクライアントアプリを別チームが作成していて、そちらではWSをCallする度にWeb参照の追加をしているので、どうしてもロードバランサーURLでWeb参照の追加をする必要がありました。(そんな実装やめてよ…と言いたいところでしたが)

ここからは自己レスですが、サーバのWeb参照するフォルダに1度サーバ直でクライアント側にダウンロードしたWSDLを〜.wsdlとして置いて、それに対してWeb参照の追加を行ったところロードバランサーURLでもうまくいきました!
.netのWebServiceはWSDLを自動生成するので無理かな、とも思ったのですがうまくいきました。
1

スキルアップ/キャリアアップ(JOB@IT)