W3WP(IIS)プロセスのリサイクル場合ASP.NETインプロセスセッションを維持

StackOverflow https://stackoverflow.com/questions/1448367

質問

私はそれが唯一のw3wpメモリに常駐するように、そのW3WPオーナープロセスがリサイクル時に、すべてのインプロセスセッションデータは常に消えていることを理解しています。

リサイクルプロセスのどこかに、外部発生したときにセッションデータをキャッシュし、その後再注入(および再構築)することが可能であるならば、それが復帰するとき、

私はしかし、セッションを疑問に思いました。そのように私は必要な状態サーバーのような外部化の信頼性とインプロセスの速度を取得したいです。これは可能でしょうか?

役に立ちましたか?

解決

いいえ、これは不可能です。インプロセスセッション状態またはキャッシュを「ウォームアップ」するAPIはありません。このような解決策は、とにかく信頼できないだろう。あなたは、あなたのアプリケーションが行った最後のものは、あなたが、とにかく現在のようにインポートされたデータに数えることができませんでしたので、その現在のセッション状態をエクスポートするだろうとgauranteeことができませんでした。

あなたは、あなたのWebアプリケーションと同じホスト上でのアウトprocの状態サーバーを使用することができます。次に、Webアプリケーションは、そのままの状態情報を保持し、自由に再利用することができます。これはあなたが別のマシンにSQLまたはネットワーク通過のオーバーヘッドに対処する必要がないので、セッションを管理するために、SQL Serverを使用するよりもかなり高速である、唯一の方法、それはインプロセスよりも悪いのセッション状態は、データがなければならないですプロセスの境界を越えマーシャルが、限り、あなたは急速にセッションデータを変更する膨大な量を持っていないとして、これは全く目立たないはずです。

また、 Microsoft Projectのコードネーム「ベロシティ」など、他の選択肢ありますが、 のか、(特に私は確信しています)そのオファーは、SQL Serverを使用してに頼らずにセッション状態またはサーバーファーム内のサーバー間で同期のキャッシュを保つことができるキャッシュ機構を分散します。

他のユーザーが投稿に反して、私はすべての可能性であれば、セッションデータを保存するためにViewStateを使用することはありません。ユーザーが後退するか、それが失われることが転送した場合に1、それは、真のセッション状態ではありません。第二に、それはかなり安全でないです。第三に、それは虐待を受けた場合、大規模なページの膨張を引き起こします。

他のヒント

たぶん、あなたはクッキーで十分な情報を格納することができます(または、ViewStateに)あなたができるように、ワーカープロセスがリサイクルされた場合、そのデータに基づいてセッションを再作成します。

それとも、あなたはあなたのセッションの一部を保存する独自の状態サーバー(たとえばWindowsサービス)を作成し、リモートまたは類似介してウェブアプリからこのサービスにアクセスすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top