DOBON.NET DOBON.NETプログラミング掲示板過去ログ

【C#】Web参照について

環境/言語:[言語:Visual C# .NET 環境:.NET Framework1.1 SP1]
分類:[.NET]


初めて投稿させていただきます。なしぇると申します。

現在、C#にてスマートクライアント方式のシステムを作成しています。
そこで、クライアントからサーバーヘの接続で
「WebReferences」の参照先プロパティにて

  URLの操作 - ダイナミック
  Web参照URL - http://localhost/*****/Service.asmx ← *****はIISの仮想DIR名

と設定したEXEを作成し、サーバー側にて
web.config、対象EXE.exe.configの参照先を対象サーバーに変更したのですが
うまく対象サーバーに接続してくれません。
URLの操作を「スタティック」にし、Web参照URLを直接指定したEXEでは
普通に起動できました。

クライアントからのURL指定は
「http://サーバー名/A/対象EXE.exe?uid=ユーザー名&tencd=店番号」
と行っています。

何かほかの原因があるのでしょうか・・・?
いろいろやってみましたが、私の拙い頭脳ではわかりませんでした。

どなたかご教授のほど、よろしくお願いします。
■No10944に返信(なしぇるさんの記事)
>
> 初めて投稿させていただきます。なしぇると申します。
>
> 現在、C#にてスマートクライアント方式のシステムを作成しています。
> そこで、クライアントからサーバーヘの接続で
> 「WebReferences」の参照先プロパティにて
>
>   URLの操作 - ダイナミック
>   Web参照URL - http://localhost/*****/Service.asmx ← *****はIISの仮想DIR名
>
> と設定したEXEを作成し、サーバー側にて
> web.config、対象EXE.exe.configの参照先を対象サーバーに変更したのですが
> うまく対象サーバーに接続してくれません。
> URLの操作を「スタティック」にし、Web参照URLを直接指定したEXEでは
> 普通に起動できました。
>
> クライアントからのURL指定は
> 「http://サーバー名/A/対象EXE.exe?uid=ユーザー名&tencd=店番号」
> と行っています。
>
> 何かほかの原因があるのでしょうか・・・?
> いろいろやってみましたが、私の拙い頭脳ではわかりませんでした。
>
> どなたかご教授のほど、よろしくお願いします。

C#云々より、ブラウザでアドレスを打ち込んで動きますか?
動かなければ、IISの設定に問題があるか何かだと思いますよ。
ぺがらぼさん、ありがとうございます。

> C#云々より、ブラウザでアドレスを打ち込んで動きますか?
> 動かなければ、IISの設定に問題があるか何かだと思いますよ。

キャッシュをクリアした後、
ブラウザで入力も行いましたが、結果は同じでした。
仮想ディレクトリに設定してあるService.asmxは問題なく参照できるのですが・・・。
> うまく対象サーバーに接続してくれません。

とは、どううまくいかないのですか?

おそらく、パラメータを付与していることが原因と思われます。
ノータッチデプロイメントで配置されたEXEを

http://サーバー名/A/対象EXE.exe
として起動した場合は構成ファイルとして
http://サーバー名/A/対象EXE.exe.config
を読みにいきますが、

http://サーバー名/A/対象EXE.exe?uid=ユーザー名&tencd=店番号
として起動した場合は
http://サーバー名/A/対象EXE.exe?uid=ユーザー名&tencd=店番号.config
を読みにいってしまうようです。

他のサイトになりますが、
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6860&forum=7&8
が参考になりそうです。
壱丸3さん、ありがとうございます。

> 他のサイトになりますが、
> http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=6860&forum=7&8
> が参考になりそうです。

この中で「ハンドラを作成する」とありますが、
これは新たにクラスプロジェクトを立ち上げて、
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnforms/html/winforms05152003.asp
の中にあるソースを引用してDLLを作成する、ということなのでしょうか?
無知で申し訳ありません・・・。
ご教授お願いいたします。
HTTPハンドラはサーバー側で動作させるものなので、
少なくともクライアント側で動作させるアセンブリ内には作成しません。
サーバー側のアセンブリとして既存のアセンブリ内に作成するか、
アセンブリを新規に作成するかは保守性など色々な観点があると思いますのでお答えは出来ません。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnforms/html/winforms05152003.asp
の手順通りに作成すれば、動くとは思いますが
それを作成するご自身が、その動作を把握していなければ
他の問題にあたった時にさらにハマってしまうだけです。

まずは以下などを参照され、
HTTPハンドラが何なのかを勉強したほうがよいと思います。
http://ja.gotdotnet.com/quickstart/aspplus/doc/httphandlers.aspx
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpgenref/html/gngrfaddforhttphandlers.asp
ぺがらぼさん、壱丸3さん、ありがとうございました。

なんとかハンドラの作成はうまくいきました。
教えていただいたリンク先等でもう少し勉強してから
参考の方法で行いたいと思います。

ご教授、ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板