簡體   English   中英

ConfigurationManager.AppSettings緩存

[英]ConfigurationManager.AppSettings Caching

我們知道IIS緩存ConfigurationManager.AppSettings,因此它只讀取磁盤一次,直到更改了web.config。 這樣做是出於性能目的。

有人在:

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)一次,因為可以通過在應用程序運行時更改文件來輕松驗證。

OP引用的論壇帖子中的評論是:

當應用程序啟動時,Web.config的值將存儲到緩存/內存中,因此當對web.config進行任何更改時,應用程序將重新啟動。 請注意,這僅適用於Web.config, 默認情況下,可以從磁盤訪問您可能使用的任何其他.config文件

我會將此注釋解釋為默認情況下從磁盤訪問ASP.NET應用程序中除web.config之外的配置文件。 同樣,默認情況下,從磁盤訪問WinForms / Console應用程序中除MyApp.exe.config之外的配置文件。

此注釋並未聲明默認情況下從磁盤讀取MyApp.exe.config。

AppSettings已緩存。 您可以通過進一步緩存來限制namevaluecollection查找來提高性能。

請參閱: DotNetPearls靜態配置模式

它是否有效並不重要。 如果沒有性能問題,請不要修復性能問題。

正如約翰所說,如果你實際上看到性能受到影響,那么只會花更多的時間。

此外,我非常確定這些應用程序將配置保存在內存中 ,並且要查看配置中的任何更改,應用程序必須重新啟動

有關剩下的奧秘的進一步閱讀

試試吧,

ConfigurationManager.RefreshSection("appSettings")

小心文件名( 在bin文件夾中

普通文件名:appname。 exe.config

如果調試模式:appname。 vshost.exe.Config

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM