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.

7
demandé sur iXcoder 2010-11-13 08:17:08

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.

5
répondu Sankalp 2011-02-25 14:58:07

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;
    }
}
11
répondu Pieter van Ginkel 2010-11-13 08:49:53

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

2
répondu Jon Seigel 2010-11-13 05:30:29

vous pouvez également utiliser Cache , qui a des avantages comme la capacité de définir l'heure/date d'expiration.

0
répondu Shadow Wizard 2010-11-15 14:03:26