Mar*_*tin 6 c# asp.net asp.net-4.0 global-asax
在WCF服务中,我需要创建一个应该可以随时随地访问的变量.我的服务的所有方法都需要访问该数据,我只能加载一次.所以我想在Global.asax.cs中使用静态变量.但是我不确定该变量的范围是什么.该数据是否将用于所有请求?我的理解是它应该是因为应该在App域中使用相同的静态变量.那是对的吗?
public static IList<MyData> Data { get; set; }
private static IList<MyData> Load()
{
return Big data struct from DB.
}
protected void Application_Start(object sender, EventArgs e)
{
Data = Load();
}
Run Code Online (Sandbox Code Playgroud)
最后,有没有更好的方法来实现这一目标?我不是静态变量的忠实粉丝......
您可以使用应用程序变量:
public static IList<MyData> Data {
get
{
if (Application["MyIListData"] != null)
return (IList<MyData>)Application["MyIListData"];
else
return new IList<MyData>();
}
set
{
Application["MyIListData"] = value;
}
}
protected void Application_Start(object sender, EventArgs e)
{
Data = Load();
}
Run Code Online (Sandbox Code Playgroud)
在实际实现中没有太大的不同,除了现在通过该变量名称作为应用程序变量全局可用.
| 归档时间: |
|
| 查看次数: |
10681 次 |
| 最近记录: |