如果我得到这样的值:
string value = ConfigurationManager.AppSettings["Key"];
我期待.Net(在我的情况下为MVC4)在启动应用程序域时解析了应用程序设置,我实际上是从内存中读取的。
如果不是这种情况,并且每次都会命中文件,那么在获取 AppSettings 时是否有任何线程安全保证?
快速尝试使用我的 Google-Fu 失败了。
我倾向于使用这种机制来填充构造函数中的实例字段,因此:
public class MyThing
{
private readonly string thingValue;
public MyThing()
{
thingValue = ConfigurationManager.AppSettings["Key"];
}
}
我们最近遇到了一个外部依赖失败的场景,因为它们存在竞争条件并且“无法读取配置设置”。
这让我想知道:
- AppSettings 是线程安全的吗?
- 只读字符串模式是否提供足够的保护?