Comment définir une variable globale dans ASP.net application web
je dois faire face à une exigence
je veux que le client accède à un centre de données , mais sans utiliser la base de données, donc je veux que mon application web puisse conserver une variable de session globale ou D'Application, qui contient les données, chaque client peut accéder aux mêmes données... Je suis essayer de déclarer dans golabl, mais il semble qu'il ne peut stocker la ficelle, mais d'autres ...
comment résoudre ce problème ?
merci.
4 réponses
pour partager les données avec tous les utilisateurs de l'application, vous pouvez utiliser ASP.NET objet de L'Application. Est donné le code d'exemple pour accéder à l'objet D'Application ASP.NET:
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"]
peut être utilisé n'importe où dans l'ensemble de l'application par un utilisateur. Il sera commun à tous les utilisateurs de l'application.
une autre option pour définir une variable globale est de créer une classe statique avec une propriété statique:
public static class GlobalVariables
{
public static string MyGlobalVariable { get; set; }
}
, Vous pouvez le rendre plus complexe si vous allez utiliser cela comme une banque de données, mais la même idée va. Dire, vous avez un dictionnaire pour stocker vos données, vous pourriez faire quelque chose comme ceci:
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;
}
}
vous pouvez insérer des données dans l'objet Application
si vous voulez. Il n'est pas persistant à travers les instances d'application, mais cela peut suffire.
(Je ne vais pas suggérer qu'il s'agit d'une pratique exemplaire, mais sans une image plus claire des exigences, c'est tout ce que je peux suggérer.)
http://msdn.microsoft.com/en-us/library/system.web.ui.page.application.aspx
http://msdn.microsoft.com/en-us/library/system.web.httpapplication.aspx
vous pouvez également utiliser Cache , qui a des avantages comme la capacité de définir l'heure/date d'expiration.