- PR -

ノータッチデプロイメント&.NETリモート処理 app.configの読み込みについて

1
投稿者投稿内容
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2005-06-14 12:23
こんにちは。
VBでASP.NET、Windowsアプリ(ノータッチデプロイ)を開発してます。

ノータッチデプロイメントのWindowsアプリから、.NETリモート処理を使用してリモートアクセスをさせており、リモートクライアントであるWindowsアプリのリモート設定は
 System.Runtime.Remoting.RemotingConfiguration.Configure(type,url)
で行っています。
とりあえずリモート処理は実現できていますが、リモートサーバのURL等の内容がプログラムに埋め込まれてしまっているので設定ファイルに外出しにしたいなと。

で、そのリモートクライアントのリモート設定をapp.config(〜.exe.config)に書いてみたのですが、そのapp.configをうまく読み込むことができなくて困っています。

どうも、リモート処理設定はapp.configに書いておくだけでは有効にならず、System.Runtime.Remoting.RemotingConfiguration.Configure(filename)
で意図的に読み込まなくてはならないようです。←これが勘違い?

そこでfilenameにいろいろ設定してみましたがエラーが出てしまいます。
例えば、以下のように
@"WinUI.exe.config"(Windowsアプリの名前はWinUI.exeです)
  System.Runtime.Remoting.RemotingException:
  例外 System.IO.FileNotFoundException:
  指定されたファイルが見つかりません。
A"http://localhost/〜/WinUI.exe.config"(URL指定)
  System.Runtime.Remoting.RemotingException:
  例外 System.ArgumentException:
  URI フォーマットはサポートされていません。

app.configの取得は一応できてまして、
System.Configuration.ConfigurationSettings.AppSettings.Item(key)
でカスタム設定の取得を確認しています。

カスタム設定が取得できるのならば、そのファイルが取得できているはずだから、そのファイル内に書いてあるリモート処理の設定も見れるはずだー と思いまして・・・

長々と書いてしまいましたが、よろしくお願いします。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-06-14 12:38
引用:

かめたろさんの書き込み (2005-06-14 12:23) より:
ノータッチデプロイメントのWindowsアプリから、.NETリモート処理を使用してリモートアクセスをさせており、リモートクライアントであるWindowsアプリのリモート設定は
 System.Runtime.Remoting.RemotingConfiguration.Configure(type,url)
で行っています。


あれ、こんなオーバーロードってありましたっけ?
引用:

どうも、リモート処理設定はapp.configに書いておくだけでは有効にならず、System.Runtime.Remoting.RemotingConfiguration.Configure(filename)
で意図的に読み込まなくてはならないようです。←これが勘違い?


それであっています。リモート処理設定は自動では読み込まれません。
引用:

@"WinUI.exe.config"(Windowsアプリの名前はWinUI.exeです)
  System.Runtime.Remoting.RemotingException:
  例外 System.IO.FileNotFoundException:
  指定されたファイルが見つかりません。


リモーティングで起動された場合のカレントディレクトリがどこになるかは良く知らないですが(ダウンロードキャッシュの場所?)、そこに構成ファイルがダウンロードされているわけではないのでファイルは見つからないですね。
引用:

A"http://localhost/〜/WinUI.exe.config"(URL指定)
  System.Runtime.Remoting.RemotingException:
  例外 System.ArgumentException:
  URI フォーマットはサポートされていません。


エラー内容のとおりですが、
System.Runtime.Remoting.RemotingConfiguration.Configure(filename)
はファイルしか読み込めません(URL指定によるダウンロード読み込みは出来ません)。
なので、例えば一時的ファイルとして自分でダウンロードしてから、設定を読み込ませるなどの工夫が必要になります。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2005-06-14 15:15
引用:

あれ、こんなオーバーロードってありましたっけ?


Overloads Public Shared Sub RegisterWellKnownClientType(WellKnownClientTypeEntry)
Overloads Public Shared Sub RegisterWellKnownClientType(Type, String)
この2種類のようです。

引用:

リモーティングで起動された場合のカレントディレクトリがどこになるかは良く知らないですが(ダウンロードキャッシュの場所?)、そこに構成ファイルがダウンロードされているわけではないのでファイルは見つからないですね。


ノータッチで起動された場合、アセンブリがダウンロードされる場所は
\Documents and Settings\アカウント名\Local Settings\Application Data\assembly\dl2
みたいですが、そのプロセスが動いているのはどこ?IEEXEC.exeが動いてる場所?
ローカルドライブを「〜.exe.config」で検索してみましたが見当たりませんでした。
ダウンロードしてきてもファイルに保存しているわけではなくレスポンスのStreamを読んでいるだけなのかもしれませんね。

引用:

例えば一時的ファイルとして自分でダウンロードしてから、設定を読み込ませるなどの工夫が必要になります。


やっぱり、そうするしかないですかねー。
できれば何か自動でやってくれる方法はないかと思ったのですが・・・。

System.Net.WebRequest & System.Net.WebResponse
でapp.configをとってきてファイルに保存し、
System.Runtime.Remoting.RemotingConfiguration.Configure(filename)
でリモート設定を反映させるようにしました。

なちゃ様、どうもありがとうございました。
1

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