我们知道IIS缓存ConfigurationManager.AppSettings,因此它只读取磁盘一次,直到更改了web.config.这样做是出于性能目的.
有人在:
http://forums.asp.net/p/1080926/1598469.aspx#1598469
表示.NET Framework不会对app.config执行相同操作,但它会从磁盘读取每个请求.但我觉得很难相信,因为它会变慢.请告诉我他错了或者我必须修复我写的每个控制台/ Windows窗体/ Windows服务.
更新我很遗憾我误解了人们在上面的链接论坛中所说的内容.
我通过该ApplicationHost.CreateApplicationHost
方法托管ASP.NET运行时.当我修改web.config
应用程序运行时,我看到很多第一次机会ThreadAbortException
抛出.这是在我的应用程序崩溃之前.我假设这是因为运行时已检测到配置更改并想要重新启动.
这对我们来说并不是真正受支持的场景,所以我更愿意,如果我可以关闭自动重新加载.
有谁知道如何做到这一点?
azure角色设置非常有用,因为它允许您在IIS运行时即时更改值.但问题是,如果你有足够的用户,并且每次从文件中读取配置值时,最好不要将它放在静态变量中使用它.下一个问题,如果你把它放在一个静态变量中,那么你每次更改它时都必须重置IIS.我做了一些研究,并在stackoverflow上发现了类似的问题,它告诉我只有第一次读取conf文件,然后将它存储在缓存中.但是回答的问题是ConfigurationManager,我的是来自Azure的RoleManager.
这是获取azure当前设置的行:
RoleEnvironment.GetConfigurationSettingValue("Appname.settingKey");
Run Code Online (Sandbox Code Playgroud)
这是一个将其保存在缓存中,我知道它是如何工作的,并得到电流设定例:ConnectionString的在webconfig:
ConfigurationManager.ConnectionStrings["SettingKey"].ConnectionString;
Run Code Online (Sandbox Code Playgroud) .net ×2
asp.net ×2
iis ×2
azure ×1
c# ×1
caching ×1
httpruntime ×1
performance ×1
recycle ×1
web-config ×1