【问题标题】:Store hashtable in a session在会话中存储哈希表
【发布时间】:2011-11-17 01:54:32
【问题描述】:

如何将 HashTable 集合存储到 .NET 中的 Session 变量中。不幸的是,我无法存储 HashTable 或 Dictionary。

请帮帮我。

【问题讨论】:

  • 请解释您为什么不能这样做,然后我们可能会提供帮助。您尝试了什么,遇到了什么问题?
  • 请定义为什么您“无法存储 Hashtable 或 Dictionary”,因为它们是存储在 Session 变量中的完美对象。
  • 你在这些字典/哈希表中存储了什么样的对象?它们是可序列化的吗?您使用的是哪种会话状态提供程序(在 proc、状态服务器...等?)。
  • 它只是字符串数据。我不知道为什么它没有被存储..你可以用代码看到我的评论..虽然我分配的整个数据都在哈希表对象中..但后来当我调用它时我没有得到它..

标签: c# .net asp.net session hashtable


【解决方案1】:

我得到了答案。代码没有问题,即新关键字。在存储到 Session 之后的上述步骤中,我正在清除 HashTable 项目。

         Hashtable ht = new Hashtable();
         if(condition){

        ht.Add("id", 1);
        ht.Add("name", "ram");
        Session["hashtab"] = ht;  
        }

        ht.Clear();

这个 ht.Clear() 是问题所在。我删除了它并且没有问题。 就像这样。当我删除该代码时,它对我来说工作正常。

【讨论】:

    【解决方案2】:

    我不知道为什么不能将哈希表存储到会话中并从会话中取回,因为它就像在会话中存储表或任何对象一样简单。 如果我正确理解您的问题,我可以提供如下解决方案。

    在您要将哈希表存储到会话中的页面中执行此操作。

     Hashtable ht = new Hashtable();
                ht.Add("id", 1);
                ht.Add("name", "ram");
                Session["hashtab"] = ht;  
    

    并在下面的其他页面中获取哈希表。

    哈希表 ht = new Hashtable(); ht =(Hashtable)Session["hashtab"];

    【讨论】:

    • 当你得到哈希表时,跳过新的;它将它指向新创建的哈希表,然后您立即将其指向会话中的哈希表。所以第一次分配是浪费时间和内存来垃圾收集。仍然可以工作,在这种情况下没有真正的疾病,但如果你在一个紧密的循环中这样做,它可能会导致不可忽视的时间和内存浪费。
    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 2017-01-22
    • 2015-07-18
    • 2015-05-26
    相关资源
    最近更新 更多