0
 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.SMTP用户名;

目前:我在我的视图或控制器中以上述方式在我的系统中使用系统级变量。但上面的问题是静态构造函数最初只被调用一次。如果更改了 SMTPUsername,新的 SMTPUsername 将不会反映在系统中。我必须重新启动 iis 池才能使其再次调用。

我想要的是:开发一种机制,当某个变量发生变化时会触发数据库。如果没有任何变化,则访问已经获取的变量。有人可以对此提供一些见解,asp.net mvc 中的任何推荐方式。

我想做的是实现缓存。但我能做到的适当方式是什么?

4

1 回答 1

1

你可以实现一个SqlDependecyCache

于 2013-04-29T14:14:49.067 回答