IISはConfigurationManager.AppSettingsをキャッシュするため、web.configが変更されるまで、ディスクを1回だけ読み取ります。これはパフォーマンスの目的で行われます。
誰か:
http://forums.asp.net/p/1080926/1598469.aspx#1598469
.NET Frameworkはapp.configに対して同じことをしませんが、リクエストごとにディスクから読み取ります。しかし、私は信じがたいと思います。なぜなら、それは遅くなるからです。彼が間違っているか、私が書いたすべてのコンソール/ Windowsフォーム/ Windowsサービスを修正する必要があることを教えてください。
更新上記のリンクされたフォーラムで人々が言ったことを誤解したことを残念に思います。
簡単なテストでは、これらの設定はアプリケーションの起動時にのみロードされることが示されているようです。
//edit the config file now.
Console.ReadLine();
Console.WriteLine(ConfigurationManager.AppSettings["ApplicationName"].ToString());
Console.WriteLine("Press enter to redisplay");
//edit the config file again now.
Console.ReadLine();
Console.WriteLine(ConfigurationManager.AppSettings["ApplicationName"].ToString());
Console.ReadLine();
すべての出力が同じままであることがわかります。
アプリケーションの起動時にアプリケーション構成ファイル(MyApp.exe.config)を1回読み取ります。これは、アプリの実行中にファイルを変更することで簡単に確認できます。
OPが参照したフォーラム投稿のコメントは次のとおりです。
Web.configの値は、アプリケーションの起動時にキャッシュ/メモリに保存されるため、web.configに変更が加えられたときにアプリが再起動するのはなぜですか。これはWeb.configにのみ適用されることに注意してください使用する可能性のある他の.configファイルはデフォルトでディスクからアクセスされます
このコメントは、web.config以外の構成ファイルASP.NETアプリケーション内がデフォルトでディスクからアクセスされることを意味すると解釈します。同様に、WinForms/ConsoleアプリケーションのMyApp.exe.config以外の構成ファイルには、デフォルトでディスクからアクセスします。
このコメントは、MyApp.exe.configがデフォルトでディスクから読み取られることを示していません。
ジョンが言うように、実際にパフォーマンスの低下が見られる場合にのみ、これにより多くの時間を費やしてください。
また、これらのアプリケーションはメモリ内の構成を保持していると確信しています。構成内の変更を確認するには、アプリケーションを再起動にする必要があります。
いくつかの さらに読む 残りの謎について。
それを試してみてください、
ConfigurationManager.RefreshSection("appSettings")
ファイル名に注意してください(binフォルダー内)
通常のファイル名:appname .exe.config
デバッグモードの場合:appname .vshost.exe.Config
AppSettingsがキャッシュされます。さらにキャッシュしてnamevaluecollectionルックアップを制限することにより、パフォーマンスを向上させることができます。
そうかどうかは関係ありません。パフォーマンスの問題がない場合は修正しないでください。