アプリケーションのリサイクルによるASP.Netセッションの損失をプログラムで診断しますか?
-
03-07-2019 - |
質問
ローカルで正常に動作するASP.Net 2.0(VS2005)アプリケーションがありますが、リモートサーバーに展開するとセッション状態が失われることがあります。
IISがアプリケーションのスタイルを変更し、それによってユーザーのセッション状態が吹き飛ばされる可能性がある問題が疑われます。ただし、サーバーは私たちの制御下にないリモートです...したがって、IIS Adminを起動してアプリケーション設定をチェックアウトすることはできません。もちろん、別の考えられる原因は、何らかの理由でクライアントがASP.NetセッションCookieを拒否することです。
(シンプルなアプリであり、Sessionオブジェクトから何も削除しようとしないため、コード内のエラーはほとんど除外しましたが、もちろん...これらは有名な最後の言葉ですよね?)
プログラムでこれをどのように診断しますか
私は主に問題を診断する方法を見つけようとしています。過度のアプリケーションリサイクルが原因である場合、コードを作成するのはそれほど難しくないはずです。
これはASP.Net開発者にとって一般的な問題であると確信しています。
解決
設定を変更できる場合、トラブルシューティングに役立つリンクがいくつかあります:
他のヒント
回避策は、procセッションの状態を使用することです(サーバーの制御がない場合は、おそらくSQLベースでなければなりません)。 Sessionに保存するものはすべてシリアル化可能でなければならないため、コードに少し余分な作業が必要になりますが、セッションが失われるアプリの再起動の問題は解決します。
アプリケーションプールで複数のワーカースレッド(Webガーデン)用に構成されたIISは、セッション状態が失われる可能性があります。
セッションが失われるシナリオが見つかりました-asp.netページで、金額テキストボックスフィールドに無効な文字があり、その後に他の目的のためにセッション変数の取得が続きます。 ToInt32またはdoubleは最初のチャンス例外を発生させますが、エラーはその行に表示されません。その代わりに、未処理の例外のためにセッションがnullであるため、セッション取得時にエラーが表示され、デバッグを欺きます...
ヒント:失敗するようにシステムをテストしてください-破壊的..無関係なシナリオで十分なジャンクを入力すると、ローカルマシンでもこのマシンを再現できます...:)
お役に立てば幸いです hydtechie