首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ASP.net web应用程序中定义全局变量

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

Stack Overflow用户
提问于 2010-11-13 13:17:09
回答 5查看 86.6K关注 0票数 13

我面临着一个要求,

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

如何解决这个问题?

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-14 04:44:28

要与所有应用程序用户共享数据,可以使用ASP.NET应用程序对象。给出了在ASP.NET中访问应用程序对象的示例代码:

代码语言:javascript
运行
复制
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"]。它对所有应用程序用户都是通用的。

票数 11
EN

Stack Overflow用户

发布于 2010-11-13 16:49:53

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

代码语言:javascript
运行
复制
public static class GlobalVariables
{
    public static string MyGlobalVariable { get; set; }
}

如果您打算将其用作数据存储,则可以使其变得更复杂,但想法是一样的。比方说,你有一个字典来存储你的全局数据,你可以这样做:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2010-11-13 13:30:30

如果需要,可以将数据填充到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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4171089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档