/ / ASP.NETセッションを1つの要求で失った後、次の要求で回復-asp.net、セッション、Cookie

あるリクエストでASP.NETセッションを失い、次のリクエストでそれを取り戻します-asp.net、セッション、Cookie

私は私の1つで非常に奇妙な問題を見ています生産ボックス。 IIS 6でホストされているアプリケーションは、Apache Webサーバーが前にある単一のマシン上にあります。私のアプリケーションは認証にASP.NETメンバーシップを使用しており、セッション状態に依存しています。現在、セッション変数にアクセスしようとすると一部のサーバーリクエストがnull例外をヒットするという問題が発生していますが、リクエストが再試行された場合、ページは例外をヒットせず、適切に動作します。

これには何か関係があると思うセッションID Cookieがリクエストで破損するか失われるかのいずれかですが、何が原因で発生するかわかりません。私がこれを信じる理由は、ASP.NETがCookieを認識せず、新しいセッションを作成していないように見えるためです。例外を取得すると、新しいSessionID Cookieをクライアントに書き戻すことができないため、クライアントは元のSessionIDを維持します。次に、次の要求が送信されると、元のSessionID Cookieが使用され、ASP.NETがセッション状態を見つけて取得できるようになります。これは純粋な推測ですが、症状に合っているようです。

また、このサイトは他のクッキーを使用していませんASP.NET MembershipとASP.NET Sessionで必要なものなので、IEのCookie制限を十分に下回っています。このサイトは約8か月間正常に機能しており、最近この問題が発生しました。 IISのリセットを試み、実際にマシンを再起動しましたが、問題を解決するものは何もありませんでした。

アップデート:

ここに求められたいくつかの説明があります。

1。)Apacheサーバーは、インターネットに公開されている唯一のものです。すべての要求は、このボックスへのHTTPS経由で発生します。 Apacheボックスは、HTTP経由ですべてのリクエストをアプリケーションサーバーに転送します。これはセキュリティ上の理由で行われています。 Apacheが問題である可能性があるかどうかを確認しましたが、Apacheログにはエラーがないようです。

2。)実際のセッションオブジェクト自体で発生する例外とは対照的に、アプリケーションがそこにあると想定しているセッションに格納されているオブジェクトにアクセスしようとすると、null例外が発生します。

回答:

回答№1は0

問題の根本を発見しました。 アプリケーションサーバーでIISメタベースが破損したようです。この問題を修正する最善の方法は、IISのクリーンインストールを行うことですが、ビジネス上の制約のため、これは選択肢ではありません。そのため、別の解決策は、アプリケーションを実行するための新しいアプリケーションプールを実際に作成することです。私よりもIISの専門知識のある人によると、これは短期的には問題を解決しますが、このアプリプールでも同じことが起こる可能性が高いです。そのため、これが再び発生し始める場合、新しいアプリケーションプールを作成する必要があります。