web-dev-qa-db-ja.com

Windowsサービス構成ファイルC#

Visual Studio 2008/C#を使用してWindowsサービスアプリケーションを開発しました。

プロジェクトにapp.configファイルがあります。インストールすると、app.exe.configファイルが実行可能ファイルの横に表示されますが、ConfigurationManager.AppSettingsから値にアクセスしようとすると、そこから値を読み取っていないように見えます。

それは設定ファイルを他の場所にコピーしたか、私が知らない他の問題がありますか?

前もって感謝します、

マーティン。

編集:構成ファイル名はinfact my_exe_file_name.exe.configで、次のようになります。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>

    <add key="RuntimeFrequency" value="3" />

  </appSettings>
</configuration>

そして、私は経由で読み込もうとしています:

ConfigurationManager.AppSettings["RuntimeFrequency"]

常に表示されるデバッグ値は「1」であり、「3」ではありません。ここで何か間違ったことをしていますか?

27
Martin

エラーを見つけましたが、それはファイルのアクセス許可に関連していました。サービスをインストールした後、ローカルユーザーアカウントにapp.exe.configファイルを変更するアクセス権がありませんでした。

編集に使用していたツールは、ファイルを保存するためのアクセスが拒否されていることを通知していませんでした(誰かが興味を持っている場合はnotepad ++です)。

解決しました、みんなありがとう。

マーティン。

27
Martin

デバッグモードの場合は、my_exe_file_name.vshost.exe.configの設定を確認し、app.configファイルでこれを調整することも確認してください。 Visual Studioは、bin/debugフォルダーの最終構成ファイルを更新する必要があります。

3
Aaron Fischer

間違った設定ファイルを更新している可能性があります。あなたはそれを使用してダブルチェックする必要があります

System.Configuration.ConfigurationManager.OpenExeConfiguration(PATH_TO_CONFIG);
2
Igor Zelaya

一般的に、私が書いているWindowsサービスでは、appName.exe.configファイルをC:\ WINDOWS\system32 \にドロップします

おそらく、そのディレクトリに古いバージョンがあり、プロジェクトで設定ファイルを更新したとしても、サービスが値を取得している場所です。

1
Dave Baghdanov

App.configファイルの名前をyour_exe_file_name.exe.configに変更し、exeファイルの近くに配置する必要があります。

0
Alex Reitbort

RuntimeFrequencyエントリの複数のインスタンスが定義されている可能性はありますか? ConfigurationManagerはファイルを上から下に読み取り、各設定を個別に処理します。したがって、ファイルで定義されているRuntimeFrequencyの最後の値は、使用する値です。

ファイルが使用されているかどうかを確実に知りたい場合は、RuntimeFrequencyの定義を削除またはコメントアウトして(コピー/貼り付けエラーが発生します)、ConfigurationManagerがAppSettingsのエントリを参照しようとしたときにアプリケーションエラーが表示されるのを待ちます存在しない。