0

デフォルトの「処理中」セッションを使用する MVC3 Web アプリがあります。PRG パターンを配置しました。つまり、モデル状態が無効な場合のポストバック中に、モデルを TempData に保存し、元の get アクションにリダイレクトします。get アクションでは、モデル データ (存在する場合) をフェッチし、ビューに送信します。これは MVC の基本的な側面の 1 つだと思います。

バックグラウンドの TempData は、PRG 遷移で使用されるセッション変数であることを知りました。私が知る必要があるのは、2 つのページで TempData["model"] のようなものを使用し、ページに同時にアクセスする場合、競合または相互参照が可能かどうかです。TempData["model"] の共通データを上書きしますか、それとも 2 つの異なるページで同じ tempdata 名を使用しても安全ですか。

また、Session["model"] の種類のデータと競合しますか? 予期しないセッション データの破損に直面しています。おそらく、セッション データをリセットする内部コードまたはその他の原因が原因です。セッション データが部分的に破損する可能性はありますか? つまり、Session["data1"] は問題ありませんが、Session["data2"] はなくなりましたか?

ユーザーが Web アプリを長時間使用することが多く、セッション タイムアウトが発生します。セッションの ASP.Net セッション状態サービスを試してみましたが、重いオブジェクトを (シリアル化によって) セッションに保存するため、パフォーマンスの問題が発生しました。最終的に、proces モードで元のデフォルトに戻りました。

同様の経験をしたことがある場合は、共有してください。

4

1 に答える 1

0

TempData はデフォルトで SessionState を使用し、SessionState へのアクセスはデフォルトで排他的です。そのため、2 つのリクエストを同時に行うと、一方はもう一方が SessionState ロックを解放するのを待つ必要があります。TempData は、SessionState を直接使用することを妨げません。SessionState はデフォルトでインプロセスを使用するため、ほぼいつでも無効化できます。

http://brockallen.com/2012/06/11/cookie-based-tempdata-provider/をご覧ください。

于 2013-10-25T14:34:32.570 に答える