- PR -

Webサービスを参照しているクラスのApp.Configについて

投稿者投稿内容
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2007-01-29 21:29
いつも参考にさせていただいております。

App.Configの設定で質問があります。
あるクラスライブラリ内でWebサービスをWeb参照しています。
そのWeb参照はクラスライブラリのApp.Configに書かれています。

そして、Windowsフォームプロジェクトで上記クラスライブラリを参照設定しているのですが、クラスライブラリ中のWebサービス参照をWindowsフォームのApp.Config内で設定できないのでしょうか?

クラスライブラリのApp.Config内で設定している名前と同じものを作成してみましたが、DLLを作成した時のApp.Configの設定値になってしまいました。

解決策がございましたら、ご教授願います。
宜しくお願い致します。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-01-29 21:33
あれ?逆にクラスライブラリの App.config なんて参照できないと思いますけど。

場合にもよりますが、クラスライブラリが直接設定ファイルを参照すると使いにくくありませんか?
アプリケーション側から引数なりで設定してあげてはどうでしょう。

_________________
囚人@わんくま同盟
[url=http://blogs.wankuma.com/shuujin/]囚人のジレンマな日々[/url]

[ メッセージ編集済み 編集者: 囚人 編集日時 2007-01-29 21:35 ]
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2007-01-29 21:43
囚人さん、ご回答ありがとうございます。

>あれ?逆にクラスライブラリの App.config なんて参照できないと思いますけど。
そうですよね。私も不思議に思っていました。
クラスライブラリの出力先にはApp.Configなんてできていないのに、何を読みにいっているのか・・・。クラスライブラリは内部で保持しているんですかね?

>場合にもよりますが、クラスライブラリが直接設定ファイルを参照すると使いにくく>ありませんか?
>アプリケーション側から引数なりで設定してあげてはどうでしょう。
やはりそうなりますか。
アプリケーション側から引数を渡すとして、クラスライブラリ内では、
Dim ws as new Webサービス
ws.Url = "http://・・・"
という感じで良いでしょうか?
インスタンスしてからで良いのでしょうか?

宜しくお願い致します。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2007-01-29 22:23
私も、クラスライブラリが直接Configファイルを参照するのは場合によっては使いづらくなると思います。
ただ、場合によってはその方が使いやすいこともあるとも思ってます。
ということで、一応クラスライブラリのConfigファイルについて回答しておきます。


クラスライブラリ用のConfigファイルの設定項目は、
全て参照元となるアプリ側で設定できます。

例えば、A.exeとB.dllがあり、それぞれ(またはB.dll)が独自のConfigファイルを使用する場合、
全てA.configにて設定を行います。B.configは用意しても無効となります。


>クラスライブラリのApp.Config内で設定している名前と同じものを作成してみましたが、DLLを作成した時のApp.Configの設定値になってしまいました。

これはおかしいですね。。。
そもそもWebサービスのプロキシクラスがConfigファイルの設定を無視するようになっちゃってたりしませんか?
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2007-01-29 22:29
よこけんさん。ご回答ありがとうございます。

>これはおかしいですね。。。
>そもそもWebサービスのプロキシクラスがConfigファイルの設定を
>無視するようになっちゃってたりしませんか?
申し訳ありません。プロキシクラスは、どの様に確認すれば良いでしょうか?
Webサービス参照のプロパティでURLの動作はダイナミックになっています。
これの事で良いでしょうか?

宜しくお願い致します。


[ メッセージ編集済み 編集者: koseki 編集日時 2007-01-29 22:38 ]
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2007-01-29 22:46
Web参照設定のプロパティで「URLの動作」の値が「スタティック」になってるとかですね。
もしかしたら、VS2003だと表示名が多少違うかもしれません。
あとはConfigファイルに記述した設定項目に記述間違いがないか、ですね。
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2007-01-29 22:54
よこけんさん、ご回答ありがとうございます。
>Web参照設定のプロパティで「URLの動作」の値が「スタティック」に
>なってるとかですね。
>もしかしたら、VS2003だと表示名が多少違うかもしれません。
>あとはConfigファイルに記述した設定項目に記述間違いがないか、ですね。
「ダイナミック」になっているので、問題ないと思います。
また、環境はVS2005です。
他に何か確認できる事はないでしょうか?
A.EXEの方でApp.Configを設定していない場合でも、
B.DLLを作成した時の設定を取得してしまっています。
という事はプロパティ上は「ダイナミック」になっているが、
何かの設定で「スタティック」になっているのでしょうか?

宜しくお願い致します。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-01-30 00:49
Windowsアプリケーションの方のApp.config(最終的にA.exe.configなどになる)に、
正確に設定を写していれば問題なくできるはずです。

ちなみに設定が読み込めない場合などに作成時のURLになるのは、
自動生成されるソースに思い切り既定値として埋め込まれるているからです。
なので、おかしいわけではありません。

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