![](/img/trans.png)
[英]ConfigurationManager.AppSettings or only 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.