45

IIS は ConfigurationManager.AppSettings をキャッシュするので、web.config が変更されるまで一度だけディスクを読み取ります。これは、パフォーマンスのために行われます。

誰か:

http://forums.asp.net/p/1080926/1598469.aspx#1598469

.NET Framework は app.config に対して同じことを行うのではなく、要求ごとにディスクから読み取ると述べています。しかし、信じがたいと思います。なぜなら、遅くなるからです。彼が間違っていることを教えてください。そうしないと、私が作成したすべてのコンソール/Windows フォーム/Windows サービスを修正する必要があります。

更新上記のリンク先のフォーラムで人々が言っ​​たことを誤解したことを後悔しています。

4

6 に答える 6

50

簡単なテストでは、これらの設定がアプリケーションの起動時にのみ読み込まれることが示されているようです。

//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();

すべての出力が同じままであることがわかります。

于 2008-12-23T16:43:02.900 に答える
3

アプリケーションの起動時にアプリケーション構成ファイル (MyApp.exe.config) を 1 回読み取ります。これは、アプリケーションの実行中にファイルを変更することで簡単に確認できます。

OPが参照したフォーラム投稿のコメントは次のとおりです。

Web.config の値は、アプリケーションの起動時にキャッシュ/メモリに格納されるため、web.config に変更が加えられたときにアプリが再起動するのはなぜですか。これは Web.config にのみ適用されることに注意してください。使用する他の .config ファイルは、デフォルトでディスクからアクセスされます。

このコメントは、ASP.NET アプリケーションのweb.config 以外の構成ファイルが既定でディスクからアクセスされることを意味すると解釈します。同様に、WinForms/Console アプリケーションの MyApp.exe.config 以外の構成ファイルは、デフォルトでディスクからアクセスされます。

このコメントは、デフォルトで MyApp.exe.config がディスクから読み取られることを示しているわけではありません。

于 2008-12-23T16:45:10.540 に答える
3

かどうかは関係ありません。パフォーマンスの問題がない場合は、修正しないでください。

于 2008-12-23T16:36:48.793 に答える
2

AppSettings がキャッシュされます。さらにキャッシングして namevaluecollection ルックアップを制限することで、パフォーマンスを向上させることができます。

参照: DotNetPearls 静的構成パターン

于 2010-01-22T22:46:56.527 に答える
1

John が言うように、実際にパフォーマンスの低下が見られる場合にのみ、これにもっと時間を費やしてください。

また、これらのアプリケーションは構成をメモリに保持していると確信しており、構成内の変更を確認するには、アプリケーションを再起動する必要があります。

残りの謎についてさらに読むために。

于 2008-12-23T16:44:58.810 に答える