如何在ASP.net Web应用程序中定义全局变量

iXc*_*der 11 c# asp.net

我有面子要求,

我希望客户端访问数据中心但不使用数据库,所以我希望我的web应用程序可以保留全局或Application会话变量,其中包含数据,每个客户端都可以访问相同的数据...我试着在golabl中声明,但似乎它只能存储String但其他人......

如何解决这个问题呢 ?

谢谢.

Pie*_*kel 10

定义全局变量的另一个选择是创建一个带有静态属性的静态类:

public static class GlobalVariables
{
    public static string MyGlobalVariable { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果你打算将它用作数据存储,你可以使这更复杂,但同样的想法.比如,你有一个存储全局数据的字典,你可以这样做:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 静态数据仅在池内是常见的,如果某些池有许多池,则它们是不同的. (2认同)

San*_*alp 7

要与所有应用程序用户共享数据,可以使用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;
Run Code Online (Sandbox Code Playgroud)

Application["GlobalValueKey"]任何用户都可以在整个应用程序的任何地方使用.它对所有应用程序用户都是通用的.

  • 请停止在帖子中添加签名块.它们使您看起来像是在尝试向您的网站发送垃圾邮件.每个帖子都有一个指向您个人资料的链接,作为您的签名.您可以在个人资料页面中添加您喜欢的内容(在合理范围内).这将是发布您的博客,网站,边项目,业务等链接的地方. (3认同)