お客様が Windows 2003 から 2008R2 に移行したときに、古い ASP+COM アプリケーションを更新する必要がありました。このプロセスは 100% 無痛ではありませんが、成功しましたが、1 つの問題が残っています。アプリケーションは、セッション状態、または少なくとも、セッションの COM オブジェクトを保存するセッション変数をランダムに失うようです。
基本的に、アプリは次のように機能します。
ログイン フォーム ページ -> ログイン ページ (オブジェクトが作成され、Session("MyObject") に保存され、ユーザー資格情報がチェックされます -> 最初の実際のアプリケーション ページ (Session("MyObject") がコードの上部でチェックされます)。
2 番目のリダイレクトは、資格情報が正しい場合にのみ発生しますが、オブジェクトは常に作成されます。
ただし、ユーザーは、資格情報を入力した後、ログオン フォーム ページに頻繁にリダイレクトされると報告しています。
調査の結果、アプリケーションはログイン ページを適切に通過し、COM オブジェクトのインスタンスを作成して最初のアプリケーション ページにリダイレクトするようです。そして、セッション変数が再び空になるため、ユーザーはログイン フォームに戻されます。
さらに、これは体系的ではないということです。問題はかなり頻繁に発生しますが、常に発生するわけではありません。起動すると、ユーザーは通過する前に 2 ~ 3 回ログオンする必要があります。アプリケーションがリサイクルされると、通常は問題がしばらく解決されますが、これは体系的ではなく、常に必要であるとは限りません。
ここで何が起こっているのか誰にも分かりますか?
編集:いくつかの追加情報:
- ASP セッション処理がアクティブです
- コードのどの部分も、エラーが黙って抑制されているわけではありません。COMオブジェクトまたはユーザーがキャッチできる場所で発生した場合は、ログファイルに移動します。
- COM オブジェクト ログ ファイル、IIS ログ、またはサーバーのイベント ログにエラーは見られません。
- ProcMon を使用してプロセス アクティビティを追跡しても、特別なことは何も見つかりませんでした。
- COM オブジェクトのログ ファイルを見ると、COM オブジェクト インスタンスが作成され、ログイン ページから "LoginUser" メソッドが呼び出されて正常に返され、次に最初のアプリケーション ページが呼び出され、格納されているオブジェクトの存在がチェックされていることがはっきりとわかります。セッションで失敗しました。
- 単一の Web サーバーがあり、サーバー ファームはありません。