2011-09-14 28 views
-4

.NETのセッション変数にHashTableコレクションを格納する方法を教えてください。残念ながら私はHashTableも辞書も保存できません。セッションにハッシュテーブルを格納します。

私を助けてください。

+1

なぜそれができないのかを説明してください。何を試しましたか、どのような問題がありましたか? –

+1

「セッション変数」に格納するために完全に細かいオブジェクトであるため、「ハッシュテーブルまたは辞書を格納できない」理由を定義してください。 – f0x

+0

これらのディクショナリ/ハッシュテーブルにどのようなオブジェクトを格納していますか?彼らは直列化可能ですか?どのような種類のセッション状態プロバイダを使用していますか(proc、state server ...など)? –

答えて

1

私は答えを得ました。コードに問題はありませんでした。つまり新しいキーワードです。セッションiに保存した後の上記の手順では、HashTable項目をクリアしていました。

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

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

     ht.Clear(); 

このht.Clear()が問題でした。私はそれを削除し、それに問題はありません。 これはそうだった。私がそのコードを削除したとき、私のためにうまく働いていました。

0

ハッシュテーブルをセッションに格納してセッションに戻すことができないのはなぜか分かりません。セッションにテーブルやオブジェクトを格納するのと同じくらい簡単なので、セッションから戻すことはできません。 あなたの問題が正しく理解できれば、私は以下のような解決策を提供できます。

セッションにハッシュテーブルを格納するページで、このようにします。

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

以下のように他のページでハッシュテーブルを取得します。

ハッシュテーブルht = new Hashtable(); ht =(ハッシュテーブル)Session ["hashtab"];

+2

ハッシュテーブルを取得したら、新しいものをスキップします。それは新しく作成されたハッシュテーブルにポイントし、すぐにセッション中のポイントにポイントします。したがって、最初の割り当ては時間とメモリを無駄にして後でガベージコレクションを行います。この場合、実際の病気はなくても動作しますが、タイトなループでこれを行うと、無視できないほどの時間とメモリの無駄が生じます。 – FastAl

関連する問題