none
Vista上で実行するノータッチデプロイメントアプリがapp.configの読み取りできません。 RRS feed

  • 質問

  • はじめまして、ノータッチデプロイメントのアプリを作成しています。

    アプリの機能としてはapp.configの<appSettings>に設定したKeyのValueを取得する

    という簡単なものです。

     

    作成したアプリケーションをIIS(Windwos2003Server,.NET1.1(sp1))に配置して

    クライアントに.NetFrameWork1.1(sp1)をセットアップし各種設定(セキュリティなど)を行い

    アプリケーションを実行すると

    XPの環境だとKeyのValueを取得することができますが

    Vistaの環境だとValueを取得することができません。

     

    UACの無効化やIPV6の無効化など試してみましたが結果はValueを取得できませんでした。

    仕様的にしょうがないものなのか別に解決方法があるのか壁にぶち当たってしまい困っています。

     

    識者の方々、解決(回避)方法などあればご教授願います。

    もちろんヒントなどでもかまいません。

     

    宜しくお願いいたします。

     

     

     

    2007年3月30日 12:03

すべての返信

  • >やぴさん

    はじめまして。

    私も使用している言語は違うのですが同様の現象が出ています。(当方VB)

     

    VS.NET2003を使用してノータッチデプロイメントのアプリを作成し、

    IIS(Windwos2003Server,.NET1.1(sp1))に配置して

    クライアント(VISTA)に.NetFrameWork1.1(sp1)をセットアップし各種設定(セキュリティなど)を行い

    IEよりサーバーのexeを呼び出しましたが、エラーが表示され起動しませんでした。

     

    <エラー>

    基になる接続が閉じられました:リモートサーバーに接続できません

     

    原因を調べた結果App.configの<appSettings>に設定したKeyのValue(WebServiseのURL)を取得しWeb参照を

    行っている部分で、Valueが取得できないために起動できないと判明しました。

    Valueの取得方法はFramework1.1クラスを使用しています。

    Dim urlSetting As String = System.Configuration.ConfigurationSettings.Appsettings(キー)

    この部分でのクライアントエラーは起きていません。

    代入した変数が空白の状態で処理が進んでいっています。

    同様のアプリ&クライアントの設定でXP、2000では問題なく取得できています。

     

    そもそもexe.config自体がクライアントの一時ファイルに読み込まれていないからかと思いましたが、ちゃんと読み込めていました。

    サーバーのIISログを確認してもGETが記録されていました。

    ということはMachine.Configの<httpHandlers>は正常であると・・・

     

    VISTAにはFramework3.0が標準で装備されていますが「.NETアプリケーションの互換性問題 」上、1.1との共存は出来るはず・・・

    むしろ.NET1.1で作成したのならばインストールしたほうがいいようですし・・・

    <参考URL>

    http://itpro.nikkeibp.co.jp/article/COLUMN/20061017/250853/?ST=win

    <参考URLから引用 ここから>

    OSに複数のバージョンの.NET Frameworkがインストールされている場合,.NETアプリケーションは「サイド・バイ・サイド」で動作する。つまり,同じバージョンの.NET Frameworkが存在する場合,同じバージョンの.NET Frameworkを呼び出し,同じバージョンの.NET Frameworkが存在しない場合,最新の.NET Frameworkを呼び出す

    <参考URLから引用 ここまで>

     

    System.Configuration.ConfigurationSettings.Appsettingsプロパティは互換性のために残されているそうですし・・・

    <参考URL>

    http://msdn2.microsoft.com/ja-jp/library/system.configuration.configurationsettings.appsettings(VS.80).aspx

     

    やぴさんが懸念されているように本当に仕様的にしょうがないものなのでしょうか?

    ためしにexe、exe.config、dll等クライアント環境において起動してみましたが正常でした。

     

    やぴさん同様壁にぶちあたっています。

    何かご存知の方がいらっしゃいましたら、ご教授いただけますようお願い申し上げます。

     

    2007年4月13日 6:35
  • Windows Vistaではないのですが、私は同様の現象を Windows XP Professional でも確認したことがあります。

    そのときの原因はProxyサーバを経由していたことでした。

    もし、再現環境にProxyサーバがある場合、次の手順で確認してみてはいかがでしょうか?私の場合はこれで回避できました。

     

     1.もしIEが起動しているならIEを落とす。

     2.コントロールパネルのインターネットオプションを起動する。

     3.[全般]タブ/[インターネット一時ファイル]/[ファイルの削除]ボタンを押す。

     4.確認画面で[全てのオフライン コンテンツを削除する]のチェックを入れて[OK]ボタンを押す。

     5.削除されるまで待つ。

     6.[全般]タブ/[インターネット一時ファイル]/[設定]ボタンを押す。

     7.[保存しているページの新しいバージョンの確認:]の選択を[ページを表示するごとに確認する]にして、[OK]ボタンを押す。

     8.[接続]タブ/[LANの設定]/[詳細設定]ボタン/[例外] の項目にノータッチデプロイメントの配布サーバを追記する。IEでアクセスする際にIPでアクセスするのであれば、IPでの記述が必要。

     9.インターネットオプションを閉じる。

    10.コマンドプロンプトを起動する。

    11.%Windir%\Microsoft.NET\Framework\v1.1.4322 にcdする。

    12.gacutil /cdl を実行し、GACをクリアする。

    13.コマンドプロンプトを終了する。

     

    と細かく書きましたが、要は、「IEのキャッシュクリア」、「IEのキャッシュ設定」、「Proxyの例外追加」、「GACのクリア」をしているだけです。

    ここまでやった後、再度ノータッチデプロイメントアプリケーションを起動すると、私の場合は正常に読み込めるようにはなりました。

     

    では。

     

    2007年4月23日 5:24
  • .NET Framework 1.1 SP1 の不具合である可能性があります。

    Windows XP SP2 環境であっても、ipv6 がインストールされている環境では、アプリケーションが内部でデッドロックし、ハング状態となり、挙動が非常に遅い、もしくは、今回のように構成ファイルから該当キーの値が取得できないなどの問題が発生します。

     

    Vista には、標準で ipv6 が搭載されているため、ipv6 に関連する .NET Framework 1.1 SP1 側の不具合であると考えられます。

    回避方法としては、以下が考えられます。

     

    ・ipv6 を無効化 (ただし、すでにこの対応を Vista 上で試されて効かないようなので、この点を考えると別の原因による可能性も考えなければいけないかもしれません)

    Vista 上の ipv6 無効化に関しては、http://support.microsoft.com/?id=929852 が正当な方法のようです

     

    http://support.microsoft.com/?id=890323 が、実際の原因の可能性 (.NET Framework 1.1 SP1 の不具合) があるので、その場合は、マイクロソフトより Hotfix (不具合修正プログラム) を入手し適用する

     

    ・.NET Framework 1.1 SP1 をアンインストールする (SP1 を入れると問題が発生する可能性があります)

     

     

     

    -K

    2007年7月4日 4:48