0

完了時にデータを汎用リスト ( List<ViewModel>) に格納する検索機能があります。これまでは、ビューモデルの値を静的変数に割り当てて、ユーザーが使用する可能性のあるページ リクエストでデータを再利用できるようにしていました。

ただし、今日読んだ後、静的変数の値はスレッド間で共有できるようです。つまり、サイトを表示している場合、検索データを含む静的変数が別のユーザーによって変更される可能性があることを意味します。

読書の過程で、変数に属性を追加するなどの解決策を見てきました[ThreadStatic]が、これは機能しないだけでなく、さらに読んだときに不適切な解決策として完全に却下されました。

に変数を保存することについて話している人もいますHttpContext.Current.Itemsが、それについての私の理解では、それは単一のリクエストでしか続かないということです。

したがって、ここでの最善の解決策はわかりません。理想的には、アプリケーションに根本的な変更をあまり加えたくないのですが、要するに、多くのリクエストで複雑なオブジェクトを共有できるようにしたいですか? これを行う最良の方法は何ですか?

どうもありがとう

4

3 に答える 3

2

セッション (HttpContext.Session) オブジェクトで、ユーザーごとに個別にメモリに永続化する必要があるオブジェクトを格納できます。もちろん、展開はセッションをサポートする必要があります。

于 2012-09-18T13:06:37.057 に答える
1

OutputCacheAttributeを使用できませんでしたか?

于 2012-09-18T13:01:22.013 に答える
0

静的変数は悪い選択です。セッションまたは ViewState を使用できます。私に関しては、最初の方が優れています。例として

    if (Session["tmp"] == null) Session["tmp"]=new DataSet();
    DataSet ds = (DataSet)Session["tmp"];
    {
      ...Do something with ds
    }       
    Session["tmp"] = ds;

このデータセットをページ間またはハンドラー間で渡すことができますが、セッションの有効期間を管理する必要があります

于 2012-09-18T13:36:33.117 に答える