【问题标题】:Does RoleEnvironment.GetConfigurationSettingValue read every time from cfg file?RoleEnvironment.GetConfigurationSettingValue 是否每次都从 cfg 文件中读取?
【发布时间】:2016-09-07 14:31:21
【问题描述】:

azure 角色设置非常有用,因为它允许您在 IIS 运行时即时更改值。但问题是,如果您有很多用户,并且如果它每次都从文件中读取配置值,那么最好不要在不将其放入静态变量的情况下使用它。下一个问题,如果你把它放在一个静态变量中,那么你每次改变它都必须重新设置IIS。我做了一些研究,在 stackoverflow 上发现了类似的问题,它表明只有第一次读取文件中的 conf,然后将其存储在缓存中。但回答的问题是关于 ConfigurationManager,我的问题是关于 AzureRoleManager

这是获取 azure 上当前设置的行:

RoleEnvironment.GetConfigurationSettingValue("Appname.settingKey");

这是将它保存在缓存中的那个,我知道它是如何工作的,并获取当前设置,例如:webconfig中的connectionstring

ConfigurationManager.ConnectionStrings["SettingKey"].ConnectionString;

【问题讨论】:

标签: c# .net azure iis


【解决方案1】:

https://msdn.microsoft.com/en-us/library/azure/microsoft.windowsazure.serviceruntime.roleenvironment.changed.aspx 这是更改的链接。

如果您按照以下类型进行操作,您可以访问: https://msdn.microsoft.com/en-us/library/azure/microsoft.windowsazure.serviceruntime.roleenvironmentchange.aspx

这是发送到 Changed 事件以进行一般更改的类型。

这里具体是配置值更新: https://msdn.microsoft.com/en-us/library/azure/microsoft.windowsazure.serviceruntime.roleenvironmentconfigurationsettingchange.aspx

这列出了已更改的设置。请注意,它不包括更改的值,仅包括设置的名称,这是因为 Changed 事件还会重置配置缓存,因此您在更改发生后再次读取它。

【讨论】:

  • 这不能回答RoleEnvironment.GetConfigurationSettingValue 是否缓存。是吗?
【解决方案2】:

每次请求值时它都不会读取配置。配置值将在 RoleEnvironment.Changed 事件上刷​​新。

【讨论】:

  • 请你解释一下,它是否也保存在缓存中,或者来自微软的网址,我怎么能相信你?
  • 实际上,这是构建加载系统的基础,我敢打赌,相当聪明的人为 Azure 编写代码 :) 我没有找到完整的证据,但这里是 java sources for azure sdk 并且变量被缓存。 .net 代码应该类似。
  • 我反编译了完成这项工作的 dll,但无法弄清楚我对什么感兴趣。我认为 Azure 的程序员也不会犯这样的错误,但是对于生产应用程序,仔细检查永远不会伤害任何人哈哈。
猜你喜欢
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
相关资源
最近更新 更多