0

ファイルのクリーンアップや編集などを処理するカスタムWindowsサービスを作成しました。このプログラムのOnStartメソッドには、次のものがあります。

timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
timer.Interval = Convert.ToInt32(System.Configuration.ConfigurationSettings.AppSettings["RunInterval"]) * 60 * 60 * 1000);  //yeah, i know its an old method
timer.Enabled = true;

しかし、AppSettings ["RunInterval"]は、次の場合でも、毎回nullを返します。

<appSettings>
    <add key="RunInterval" value="8" />
    <!-- Lots of other stuff -->
</appSettings>

.exe.config内。なぜこれをしているのですか?設定ファイルはOnStart後までロードされませんか?そのようにはあまり意味がないようです。

4

3 に答える 3

1

OnStartハンドラーでapp.config設定を確実に読み取ることができます。他に何かが起こっているに違いありません。値がbinフォルダーのapp.configに実際に存在することを確認しましたか?

于 2012-05-04T18:39:40.517 に答える
0

どのバージョンのC#を使用していますか?System.Configuration.ConfigurationSettingsは、.NET2.0以降で非推奨になりました。代わりにSystem.Configuration.ConfigurationManagerを使用してください。

于 2012-05-04T18:43:04.613 に答える
0

私はこれとまったく同じ問題を抱えていました。applicationSettingsまたは実際にappsettingsから値を取得しようとしても、OnStartメソッドでは機能しませんでした。

最終的に、構成データのプルをOnStartメソッドからWindowsサービスのコンストラクターに移動しました。これは機能しました。

それをスクラッチします、私の全体の問題は設定の問題によって引き起こされました。defaultDatabaseを含めると、問題が発生していました。理由はわかりませんが、Patterns andPracticesdllが欠落している可能性があります。

<dataConfiguration defaultDatabase="LiveDatabase"/>
于 2014-03-18T08:01:16.810 に答える