[英]How to define a global variable in ASP.net web app
我有一個要求,
我希望客戶端訪問數據中心但不使用數據庫,所以我希望我的網絡應用程序可以保留一個包含數據的全局或應用程序會話變量,每個客戶端都可以訪問相同的數據......我嘗試在 golabl 中聲明,但似乎它只能存儲字符串但其他...
如何解決這個問題呢 ?
謝謝。
定義全局變量的另一種選擇是創建一個具有靜態屬性的靜態類:
public static class GlobalVariables
{
public static string MyGlobalVariable { get; set; }
}
如果您打算將其用作數據存儲,您可以使這更復雜,但同樣的想法也是如此。 說,你有一個字典來存儲你的全局數據,你可以做這樣的事情:
public static class GlobalData
{
private static readonly object _syncRoot = new object();
private static Dictionary<string, int> _data;
public static int GetItemsByTag(string tag)
{
lock (_syncRoot)
{
if (_data == null)
_data = LoadItemsByTag();
return _data[tag];
}
}
private static Dictionary<string, int> LoadItemsByTag()
{
var result = new Dictionary<string, int>();
// Load the data from e.g. an XML file into the result object.
return result;
}
}
要與所有應用程序用戶共享數據,您可以使用 ASP.NET Application 對象。 給出了在 ASP.NET 中訪問 Application 對象的示例代碼:
Hashtable htblGlobalValues = null;
if (Application["GlobalValueKey"] != null)
{
htblGlobalValues = Application["GlobalValueKey"] as Hashtable;
}
else
{
htblGlobalValues = new Hashtable();
}
htblGlobalValues.Add("Key1", "Value1");
htblGlobalValues.Add("Key2", "Value2");
this.Application["GlobalValueKey"] = htblGlobalValues;
Application["GlobalValueKey"]
可以被任何用戶在整個應用程序的任何地方使用。 它將對所有應用程序用戶通用。
如果需要,您可以將數據填充到Application
對象中。 它不是跨應用程序實例持久的,但這可能就足夠了。
(我不會在一分鍾內建議這是最佳實踐,但沒有更清晰的要求圖,我只能建議。)
http://msdn.microsoft.com/en-us/library/system.web.ui.page.application.aspx
http://msdn.microsoft.com/en-us/library/system.web.httpapplication.aspx
如果您使用的是WebApplication
或MVC
只需轉到Global.asax
(在 WebSite 項目中,您需要從添加新項目菜單中添加Global.asax
)。
我將解釋為您的 Web 應用程序部署兩個全局變量:
打開Global.asax
文件,然后在Application_Start
函數中定義變量,如下所示:
void Application_Start(object sender, EventArgs e)
{
Application.Lock();
Application["variable1"] = "Some Value for variable1";
Application["variable2"] = "Some Value for variable2";
Application.UnLock();
}
如果你想在 aspx 頁面中使用那些全局變量,只需像這樣調用它們:
<p>I want to call variable1 <%=Application["variable1"].ToString() %></p>
<p>I want to call variable1 <%=Application["variable2"].ToString() %></p>
但是,如果您想像這樣在服務器端 call'em 中使用那些全局變量:
protected void Page_Load(object sender, EventArgs e)
{
string str1 = Application["variable1"].ToString();
string str2 = Application["variable2"].ToString();
}
注意:您必須注意,這些全局變量對所有用戶都是公開的,不適用於身份驗證作業。
您還可以使用Cache ,它具有設置過期時間/日期等優點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.