public static class WebConfig
{
private static IList<SystemConfigs> sysconfkeys;
static WebConfig()
{
sysconfkeys = systemconfigrep.GetAllSystemConfig();
}
private static string _SMTPPort = "";
public static string SMTPPort
{
get
{
return _SMTPPort = sysconfkeys.FirstOrDefault(e => e.metakey == "SMTPPort") != null ? sysconfkeys.FirstOrDefault(e => e.metakey == "SMTPPort").metavalue : "25";
}
}
private static string _SMTPUsername = "";
public static string SMTPUsername
{
get
{
return _SMTPUsername = sysconfkeys.FirstOrDefault(e => e.metakey == "SMTPUsername") != null ? sysconfkeys.FirstOrDefault(e => e.metakey == "SMTPUsername").metavalue : "";
}
}
}
使用法: WebConfig.SMTPUsername;
現在:ビューまたはコントローラーでシステム全体で上記の方法でシステムレベル変数を使用しています。しかし、上記の問題は、静的コンストラクターが最初に一度だけ呼び出されることです。SMTPUsername が変更された場合、新しい SMTPUsername はシステムに反映されません。もう一度呼び出すには、iis プールを再起動する必要があります。
私が欲しいのは、特定の変数が変更されたときにデータベースがヒットするメカニズムを開発することです。何も変更されていない場合は、既にフェッチされている変数にアクセスします。asp.net mvc で推奨される方法で、それについての洞察を得ることができます。
私が考えているのは、キャッシュを実装することです。しかし、私がそれを行うことができる適切な方法は何ですか?