- PR -

スマートクライアントからのWebサービス呼出

投稿者投稿内容
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2005-06-08 23:17
度々お世話になります。

現在、スマートクライアントからのWebサービス呼出部分?でエラーになり困っています。
開発マシンのS/C環境では問題なく動くのですが、
サーバマシンに仮想フォルダを作成しexe,dll等を配置し、
クライアントマシンよりexeをキック(例⇒http://server/test/test.exe)すると、
ハンドルできない例外が発生します。
Webサービス呼出が含まれないexeをキックすると、問題なく起動できます。
このため、Webサービスの呼び出しに問題があるのではと思っているのですが・・・。

開発環境では動くため、セキュリティの問題等もあるのでしょうか?
サーバにアップしてしまうとコンパイルもできないので行き詰っております。

どなたか何かヒントでもありましたらぜひ教えてください。
よろしくお願いいたします。
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2005-06-08 23:27
追記です。

発生するExceptionは、System.Net.WebException です。

例外'System.Net.WebException'がIEExec.exeで発生しました。

というメッセーが出ます。
壱丸3
常連さん
会議室デビュー日: 2004/09/13
投稿数: 34
投稿日時: 2005-06-08 23:52
クライアント側に作成されたWebサービスプロキシが参照する
WebサービスのURLは問題ないですか?
"http://localhost/〜.asmx"
を参照していたりしないですか?
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2005-06-09 11:06
壱丸3さん(あれ?さんが二つ?)、ありがとうございます。

確かにクライアント側(Winアプリ)のWeb参照の設定がlocalhostになっていました。

ここで基本的な質問で申し訳ないのですが、
1.開発マシンで参照しているlocalhostのWebサービスを、
  サーバマシンに同じ名前の仮想ディレクトリを作成し配置

2.サーバマシンにはスマートクライアント用の仮想ディレクトリを
  作成し、exe等を配置

これらは全て、開発マシンで作成したものをそのままコピーしています。
スマートクライアントから見ると、呼び出すWebサービスは同じサーバマシンなので
localhostでもかまわない気がするのですが...。

見当違いのことを言ってるのかもしれませんが、よろしくお願いいたします。

ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2005-06-09 11:31
こんにちは。

引用:

みつんさんの書き込み (2005-06-09 11:06) より:

これらは全て、開発マシンで作成したものをそのままコピーしています。
スマートクライアントから見ると、呼び出すWebサービスは同じサーバマシンなので
localhostでもかまわない気がするのですが...。


スマートクライアントが実際に動作するのはクライアントマシンのCLR上です。
ですからループバックアドレスではサーバ上のWebサービスに通信が到達しません。
壱丸3
常連さん
会議室デビュー日: 2004/09/13
投稿数: 34
投稿日時: 2005-06-09 11:38
exeはサーバに配置すると思いますが、
exeが実行されるのはクライアントですね。
サーバとクライアントは別マシンなんですよね?
現在の"http://localhost/〜.asmx"の設定では、
exeが実行されたマシン内にWebサービスを探しに行ってしまいます。
で、そこにWebサービスが存在しないので例外が発生しているのだと思います。
(サーバでexeを実行すれば動作するとは思いますが。)

とはいえデフォルトではWebサービスのURLをWebサービスプロキシクラス内に
ハードコーディングされてしまうと思いますので、
VisualStudio.NETを使用されているのであれば、ソリューションエクスプローラから
WebReference以下のWebサービスプロキシが作成されたフォルダのプロパティで
「URLの動作」をスタティックからダイナミックに変更することで、
構成ファイル内(存在しない場合は自動的に作成されます)のappSettings要素に、
WebサービスのURLの項目が自動的に追加されますので、
それを変更することをお勧めします。
みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2005-06-09 11:46
ueさん、早速のレスありがとうございます。

ここからはまた、初心者的質問なのですが、
スマートクライアントと、Webアプリとは違うという認識でよろしいでしょうか?
Webアプリ(Webサービスの呼出あり)は、開発マシンでのlocalhost設定のままで
サーバ機にセットアップしても問題なく起動します。
これはサーバ機で処理したものをhttpにてクライアントに返しているだだけなので
サーバ機内でWebサービスとの通信も完結しているということですよね?
スマートクライアントは、クライアントにダウンロード?してきたexeが
クライアントマシンからWebサービスを呼ぶということでしょうか?
でしたら、確かにlocalhostのURLでは無理ですよね。

そうなると、開発時にWebサービスとスマートクライアントを同時に
作成していく場合、一度Webサービスをサーバ機に配置してからコンパイルを
行わなければならないという事になるのでしょうか????

みつん
大ベテラン
会議室デビュー日: 2004/05/21
投稿数: 100
投稿日時: 2005-06-09 12:14
引用:

とはいえデフォルトではWebサービスのURLをWebサービスプロキシクラス内に
ハードコーディングされてしまうと思いますので、
VisualStudio.NETを使用されているのであれば、ソリューションエクスプローラから
WebReference以下のWebサービスプロキシが作成されたフォルダのプロパティで
「URLの動作」をスタティックからダイナミックに変更することで、
構成ファイル内(存在しない場合は自動的に作成されます)のappSettings要素に、
WebサービスのURLの項目が自動的に追加されますので、
それを変更することをお勧めします。



この設定は、このapp.configファイルをサーバの環境に合わせて
書き換えれば見に行くWebサービスのURLをコンパイルなしに変更できると
いうことですよね??
早速テストして見ます!
ありがとうございます!!結果は後ほどご報告いたします。

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