2011-07-15 17 views
1

可能性の重複:
ASP.NET Session size limitationASP.Net - セッション制限

私はasp.netのC#のWebフォームアプリケーションを構築しています。 セッションハンドリングには最高のラッパークラスがありますか? セッションでどれくらいのデータを保存できますか?限界は何ですか?

答えて

1

あなたはラッパークラスについては、この後

ASP.NET Session size limitation

をチェックアウトすることができますが、本当にあなたがする必要がある多くありません。私は通常、セッションにアクセスするクラスを1つしか持たないことをお勧めします。私は通常、静的なプロパティを使用して、必要なオブジェクトを取得します。

public static class MyData 
{ 
    public static MyObject Item1 { 
     get { return HttpContext.Current.Session["DataKey"] as MyObject;} 
     set { HttpContext.Current.Session["DataKey"] = value;} 
    } 
} 

明らかに、オブジェクトを自動構築するために必要に応じてパターンを変更することができます。

1

大量のデータをセッションに保存する際は十分注意してください。覚えておくと、セッションは、その人の「セッション」がアクティブである限り続きます。 1秒に200回のリクエストを処理できるサーバーがあるかもしれませんが、セッションを同時に維持している人は15,000人になる可能性があります。セッション(サーバーメモリ)の既定値を使用していると仮定すると、サーバーのメモリが不足していることがすぐにわかります。

これは奇妙に聞こえるが、スケーラビリティのために、クッキーやデータベースに保存するのが大変だ。

+0

回答ありがとうございました。しかし、我々は多くの許可設定を持つWebサイトを持っており、ユーザーがログインするときにそれらをセッションに保存したいと思っています。将来はさらに多くのアクセス許可を追加することができます。 他の方法では、ユーザーがページを更新するたびにdbから許可を得ることができますが、ユーザーがページを更新するたびに50以上の行を取得したくありません。この場合、何をお勧めしますか? – Riz

+0

クッキーを可能な限りリーンに保つ必要があります。あなたがやっていることは、問題をどこか別の場所にプッシュすることだけです。 DBまたはアウトプロセス状態マネージャがより良い選択肢です。 – Kev

+0

セッションを使用する理由を完全に理解しており、他に選択肢がないかもしれません。セッションを使用する場合は、それを大規模にテストしたことを確認してください。データベースセッションプロバイダを使用するよりもはるかに高速な選択肢がいくつかあります。いくつかのthirdpartyソリューションと同様に、マイクロソフトセッションステートサーバー(速度、私が思う名前の変更されたアプリケーションファブリック)があります。 (Kevが言っているように、あなたのクッキーを平均的で控えめな状態に保つことができます。小さなスペースにあなたの役割を詰め込むことができれば、そうでなければサーバー側のソリューションが必要です)。ウェブファームに安全なものを選んでください。 –

関連する問題