我遇到一个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吗?
答案 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;
}
}
缓存配置文件,因此您不必担心每次调用该方法时读取文件的性能