次のような値を取得した場合:
string value = ConfigurationManager.AppSettings["Key"];
私は、.Net (私の場合は MVC4) がアプリ ドメインの開始時にアプリ設定を解析し、実際にメモリから読み取っていることを期待しています。
そうではなく、これが毎回ファイルにヒットする場合、AppSettings を取得するときにスレッド セーフの保証はありますか?
Google-Fu をすぐに試してみましたが、うまくいきませんでした。
私はこのメカニズムを使用して、コンストラクターにインスタンス フィールドを設定する傾向があります。
public class MyThing
{
private readonly string thingValue;
public MyThing()
{
thingValue = ConfigurationManager.AppSettings["Key"];
}
}
最近、競合状態が発生して「構成設定を読み取れなかった」ために外部依存関係が失敗するシナリオがありました。
これは私が不思議に思う:
- AppSettings はスレッドセーフですか?
- readonly 文字列パターンは十分な保護を提供しますか?