- PR -

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

投稿者投稿内容
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2007-01-30 00:53
うーん、違いましたか。。。
念のためこちらでも試してみましたが、
こちらは問題なく動作しました。

とりあえず、Webサービス参照・Settings.settingsファイル・App.configを一度削除してWebサービス参照を追加しなおしてから再度試してみてください。(バックアップを忘れずに)
あと↓も確認してください。

<本当に値は変わってないですか?>
・WebサービスのURL以外の設定項目も同様に取得不可ですか?
・Configファイルに記述する値を、ちゃんとデフォルトと違う値に変えて試してますか?
・Configファイルに記述する値は、実在しないURLにしてますか?(開発サーバーからIISに変えてもわかりづらいですから。)

<App.Config自体に問題はないですか?>
・出力フォルダに〇〇〇.exe.configは出力されてますか?(〇〇〇はExeの名前と同じこと)
・クラスライブラリプロジェクトのPropertiesフォルダ内のSettings.settingsというファイルに、型が「(WebサービスのURL)」となっている項目があると思いますが、その項目名とApp.configに記載されているWebサービスURLの項目のnameとは一致していますか?

koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2007-01-30 10:23
なちゃさん、よこけんさん、ご回答ありがとうございます。

>とりあえず、Webサービス参照・Settings.settingsファイル・App.configを一度削除
>してWebサービス参照を追加しなおしてから再度試してみてください。(バックアップ
>を忘れずに)
再設定してみました。
そうしたら、クラス側のReference.vb内のインスタンス化する所で、
Me.Url = Global.〜.My.MySettings.Default.〜_WebBase_Service(←App.Config内の名前)
の部分がコンパイルエラーになりました。
とりあえず、コメントにしてコンパイル後、
アプリの方で正しく設定して実行したら、
「Sendメソッドを呼び出す前に、Pathプロパティを設定してください。」
というエラーが出てきました。
もしかして、クラス側は上記設定でGlobalというのがあったので自動的に設定されていたのでしょうか?
そして、アプリ側の上記エラーはApp.Configを正しく読めていない証拠でしょうか?
アプリ側のスタートアップオブジェクトをSubMainにしているのが関係しているのでしょうか?SubMain内でApp.Configを読む様にするとか・・・。
アプリケーションフレームワークは有効にしていないのが問題でしょうか?
無効の場合の設定方法等があったら教えて下さい。

>あと↓も確認してください。

><本当に値は変わってないですか?>
>・WebサービスのURL以外の設定項目も同様に取得不可ですか?
>・Configファイルに記述する値を、ちゃんとデフォルトと違う値に変えて試してます>か?
>・Configファイルに記述する値は、実在しないURLにしてますか?
>(開発サーバーから>IISに変えてもわかりづらいですから。)

上記設定は正しくしているつもりです。
また、他の値は正しく取れています。

><App.Config自体に問題はないですか?>
>・出力フォルダに〇〇〇.exe.configは出力されてますか?(〇〇〇はExeの名前と同じ>こと)
>・クラスライブラリプロジェクトのPropertiesフォルダ内のSettings.settingsという
>ファイルに、型が「(WebサービスのURL)」となっている項目があると思いますが、そ
>の項目名とApp.configに記載されているWebサービスURLの項目のnameとは一致してい
>ますか?

上記も問題ありません。

宜しくお願い致します。
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2007-01-30 10:48
エラーになった所を色々やっているのですが、不思議に思った所があります。

Reference.vbはVS2005が自動的に生成しているソースなのにコンパイルエラーになっています。
Me.Url = Global.〜.My.MySettings.Default.〜_WebBase_Service(←App.Config内の名前)
で、「Defaultは'〜.My.MySettings'のメンバではありません。」というエラーになっています。
また、クラス側のApp.Configに適当に追加して、クラス内でMy.Settings.とやっても設定した値が出てきていません。
プロジェクトが壊れているのでしょうか?

宜しくお願い致します。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2007-01-30 11:23
>Me.Url = Global.〜.My.MySettings.Default.〜_WebBase_Service(←App.Config内の名前)
>の部分がコンパイルエラーになりました。

コンパイルエラーのメッセージを教えてください。
その部分こそが、App.ConfigからWebサービスのURLを取得しているコードです。
コメントアウトするのではなく、コンパイルエラーの原因を掴むことで解決するかと思います。

>アプリ側のスタートアップオブジェクトをSubMainにしているのが関係しているのでしょうか?SubMain内でApp.Configを読む様にするとか・・・。
>アプリケーションフレームワークは有効にしていないのが問題でしょうか?

何か気になることがあれば、(新規にプロジェクト作るなどして)どんどん試してみてください。本人が一番問題に近い所にいるのですから。
ちなみに、その辺りは関係ありませんね。VBはあまり詳しくないので検証してみましたが、問題ありませんでした。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2007-01-30 12:20
>「Defaultは'〜.My.MySettings'のメンバではありません。」というエラーになっています。
>また、クラス側のApp.Configに適当に追加して、クラス内でMy.Settings.とやっても設定した値が出てきていません。
>プロジェクトが壊れているのでしょうか?

Reference.vbもSettings.vbも、ツールが自動生成してくれるクラスです。
Defaultプロパティ自体が見つからないとなると、何かおかしなことになってますね。

以下の手順を試してみてください。
1.ソリューションごとバックアップを取る
2.Visual Studioから、Webサービス参照・App.configを削除する。(完全に)
3.Visual Studioを閉じる。
4.エクスプローラで、プロジェクトフォルダを開きMy Projectフォルダ内のSettings.Designer.vbとSettings.settingsを削除する。
5.Visual Studioでソリューションを再度開く。
6.プロジェクトにぶらさがってるMy Projectをダブルクリックし、設定タブにて、設定を作成する。
7.Webサービス参照を追加する。

念のため、2と4はクラスライブラリプロジェクト・アプリケーションプロジェクトの両方に対して行ってください。

#これでダメなら、ソリューションごと新規に作成しなおしかな・・・^^;
#既に作成してあるクラスとかはそのまま使えるし、そんなに手間じゃないと思いますので。。。

[ メッセージ編集済み 編集者: よこけん 編集日時 2007-01-30 12:31 ]

[ メッセージ編集済み 編集者: よこけん 編集日時 2007-01-30 12:34 ]
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2007-01-31 14:10
よこけんさん、ご回答ありがとうございます。

>以下の手順を試してみてください。
>1.ソリューションごとバックアップを取る
>2.Visual Studioから、Webサービス参照・App.configを削除する。(完全に)
>3.Visual Studioを閉じる。
>4.エクスプローラで、プロジェクトフォルダを開きMy Projectフォルダ内の
>Settings.Designer.vbとSettings.settingsを削除する。
>5.Visual Studioでソリューションを再度開く。
>6.プロジェクトにぶらさがってるMy Projectをダブルクリックし、設定タブにて、>設定を作成する。
>7.Webサービス参照を追加する
上記試してみましたが、やはり駄目でした。

そこで確認なのですが、
B.dllのApp.Config設定B_WebServiceとURLを
A.ExeのApp.ConfigにB_WebServiceとURLを追加すれば良いでしょうか?
B.dllのReference.vbを見ると、
Me.Url = Global.B.My.MySettings.Default.B_WebService
となっているのですが、A.ExeにはB.My.MySettingは無いと思います。
その為、A.Exeに同一項目があったとしても読み込めないのではないかと思います。
同一構成の簡単なA.ExeとB.dllを作成して試してみましたが、同じ結果になってしまいました。
もしかして、よこけんさんの構成と違うのでしょうか?
B.dllのプロジェクト内でWebサービスを参照していて、コンパイル後、
できたB.dllをA.Exeで参照設定しています。
AとBのプロジェクトを同一ソリューションに入れて、プロジェクト参照
した場合は問題なく動きます。

宜しくお願い致します。

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