2009-06-14 47 views
0

私はAsp.NETセッションIDに問題がありました。コードビハインドの変更があり、dllを肝臓サーバーに移動した場合、またはweb.configファイルに変更があった場合、既存のセッションにはアクセスできません。セッションIDがリセットされます。ASP.NETでセッションIDが失われる

stateserverを使用すると、セッション値を保持できます。しかし、一部の共有ホスティング環境では不可能です。

セッションの値を変更に関係なく保持する方法はありますか。

答えて

3

また、SQLサーバーベースのセッションもあります。共有ホスティングでこれを設定することもできないこともあります。しかし、できるなら、それはかなりうまくいく。それは非常に永続的であるという利点があります。サーバがダウンしても、セッションは保持されます。これはセッションを使用する唯一の方法です。ここで

は、それを設定する方法について説明の記事です: http://faqfront.com/document/sql-server-session-state

運共有ホスティングプロバイダで、それが顧客のすべてに利益をもたらす可能性があるので、このお手伝いをすることができます。

2

もう1つの方法は、サイトがセッションを使用しないようにすることです。私は間違っているかもしれないが、私はこれがSOのことだと思う。私はSOの場合は特に分かりませんが、いつでもクッキーから読み書きできます。これはコードの変更を超えて持続します。

これは実際に私がセッションタイムアウトを排除するために私のプロジェクトで実装しようとしている準備ができているものです。それは私の心の中で非常に新鮮だったので、私はそれをそこに投げ捨てると思った。

0

Sql Serverベースのセッションに加えて、セッションをサービスプロセスに格納することもできます。それはアウトオブプロセスモードと呼ばれています。

あなたはここでセッション状態への導入を見つけることができます:私のテストで http://msdn.microsoft.com/en-us/library/ms972429.aspx

0

を、session.sessionidがリセットされていません。しかし、保存されたセッション変数は失われています。

asp.netセッションIDでアクセスできるセッションデータテーブル(db)を使用することをお勧めします。したがって、アプリケーションのリサイクルはセッションテーブルに影響しません。セッションIDが変更されていないため、正確なセッション変数にアクセスできます。

2

IISアプリケーションプールをリサイクルさせているweb.configを変更するたびに、アプリケーションプールがリサイクルすると、セッションに格納されているオブジェクトはすべて失われます。これを最小限に抑える最善の方法は(proc [State Server、Sql Server、またはmemcacheやVelocityのような分散キャッシュのいずれかに)移動することなく)、単に更新頻度を制限するだけです。 「午前1時」に出してください(負荷が低い場合はいつでも)。そうでなければprocから(Sql Serverは共有環境で最適かもしれませんが、perfで幸運を祈る)あなたの最善の策かもしれません。

関連する問題