无法在Model类中检索应用程序状态

时间:2012-11-15 12:08:07

标签: .net asp.net-mvc application-state

我遇到一个MVC项目的问题,那个问题是从Application State对象中检索值。

我以这种方式在Application_Start() Global.axas.cs方法中将一些值存储到应用程序状态中:

//var str = Obj.DecryptString(ConfigurationManager.ConnectionStrings["ConStr"].ToString());
//Application["connString"] = str;

Application["connString"] = Obj.DecryptString(ConfigurationManager.ConnectionStrings["ConStr"].ToString());

我确保此时通过调试已成功检索web.config的值。

在此步骤之后,我尝试以这种方式在我的Model Class之一中检索此值:

var conn = new SqlConnection(Application["connString"].ToString());

但在这里我得到NullReferenceException Object reference not set to an instance of an object.

现在这对我来说非常困惑,如果该值已成功检索并存储在AapplicationState Application_Start()点,而不是为什么它在我的模型类中不可用,那么'在整个申请中可以使用ApplciatiopnSate吗?

1 个答案:

答案 0 :(得分:0)

我的建议是不要在Application变量中保留连接字符串。相反,您可以声明一个可以返回连接字符串的静态方法。将连接字符串存储在静态变量中,如下所示

public class Utility
{
    static string connectionString;    
    public static string GetConnectionString()
    {
        if(string.IsNullOrEmpty(connectionString))
            connectionString = Obj.DecryptString(ConfigurationManager.ConnectionStrings["ConStr"].ToString());
        return connectionString;
    }
}

缓存配置文件,因此您不必担心每次调用该方法时读取文件的性能