0

私の友人はここで質問をしました

そして彼に答えた人は-何か面白いことを書いた!(証拠なし、出典)。

アウトプロセスのセッション状態ストレージを使用している場合は、大きな違いが生じます。その場合、インターフェースがないと、システムはセッションデータが変更されていなくてもリモートデータベースに保存されます(システムは、要求中にセッションデータが変更されたかどうかを追跡しません)。IReadOnlySessionStateインターフェイスを使用する場合、ライトバックフェーズはスキップされます。

IRequiresSessionStateがセッションを書き戻すとはどこにありますか(変更されていたとしても)?

説明は喜んで除外されます。

4

1 に答える 1

2

この効果に関する正式なドキュメントは見つかりませんが、dotPeek(または他の逆アセンブラ)を起動して周りを見回すと、System.Web次のことがわかります。

  • の場合、ハンドラーが実装する場合HttpContext.Handlerは、が設定されます。setIRequiresSessionStateHttpContext._requiresSessionStateFromHandlertrue
  • この後者のプライベートメンバーは、getterにHttpContext.RequiresSessionState;を通知します。
  • SessionStateModule(これは常にモジュールパイプラインにあると思います)、そのEndRequestハンドラーでチェックHttpContext.RequiresSessionStateし、そうである場合trueは、セッション状態プロバイダーと通信して状態を保存します。
于 2012-03-09T16:54:31.940 に答える