18

セッションに 2 つのオブジェクトを保存します。どういうわけか、別のユーザーのオブジェクトの 1 つが別のユーザーのセッションにロードされました。ユーザーはこの特定のデータにアクセスするべきではありませんでした。ユーザーはそれを見てすぐに、何かが非常に間違っていることに気づきました。

彼に提示されたデータの視覚的証拠があり、セッションが混乱しない限り、それが起こった可能性はまったくありません. これは、私たちが把握できない非常に恐ろしい状況です (再現できません)。私たちにとって唯一の答えは、セッション変数を混同したことで ASP.NET StateServer を非難することです。

StateServer cookieless="false"私たちのアプリケーションは、セッション モードと FormsAuthenticationを使用して、Windows Server 2003 と IIS6 で実行される ASP.NET 2.0 アプリです。

他の誰かがこの問題を抱えていますか? どうすれば解決できますか?

4

6 に答える 6

15

前の会社でまさにこの問題に遭遇し、デバッグに 3 週間かかりました。ASP.NET は、ユーザーに他人のセッション状態を与えていました。デバッグ環境で複製することは本当に不可能でした。

見つかったときの修正は、web.config にあるものでした。よく覚えていないので、ググってみました。この問題は出力キャッシュに関係していると思います。この記事の「セッションと出力キャッシュ」を参照してください。

http://download.microsoft.com/download/3/a/7/3a7fa450-1f33-41f7-9e6d-3aa95b5a6aea/MSDNMagazineJuly2006en-us.chm (この記事のタイトルは、これら 10 の一般的な ASP.NET を回避して、サイトをスムーズに実行し続けることです。 MSDN マガジンの 2006 年 7 月版の Jeff Prosise による落とし穴)

それがあなたのシナリオのように聞こえる場合、修正は web.config の enableKernelOutputCache オプションを無効にするだけかもしれません。

幸運を。

于 2009-10-29T21:38:37.473 に答える
6

最初に自分のコードのバグを探してください。これが最も可能性の高い説明です。たとえば、静的フィールドまたはユーザー固有のデータ用のASP.NETキャッシュなどの他の共有メモリを使用します。

于 2009-10-29T20:20:01.103 に答える
3

考えられる答え-Cookieなしのセッション状態を使用して同様の問題が報告されました。

何か問題を示しているセッション

編集-追加

別の可能な答え:

ASP.NETページがSet-Cookie応答を含むHTTPヘッダーを生成すると、ASP.NETページはIIS6.0のHTTP.sysカーネルキャッシュに格納されます。

于 2009-10-29T20:50:18.580 に答える
0

何回発生しましたか?ブラウザを使用してユーザーをチェックしたか、セッションIDを使用して相互にリンクを送信しましたか?

State Serverのバグを確認する1つの方法は、別のセッションマネージャーに切り替え、SQL Serverを使用できる場合はin-procにフォールバックしますが、最初にバグを再現してテストできるようにする方法を見つけることをお勧めします。

于 2009-10-29T20:32:33.490 に答える
0

この問題があった場合、部分ビューの OutputCache 属性であることが判明しました。

于 2014-02-24T06:49:21.857 に答える
0

クロスした 2 人のユーザーが両方とも同じキャッシュ プロキシを使用している可能性はありますか? その場合、特にプロキシの動作が適切でない場合、URL が一致すると、あるユーザーが別のユーザー用にキャッシュされたデータを表示する可能性があります。

これは Google Web Accelerator プロジェクト (現在は中止) の主な問題ではありませんでしたか?

于 2009-10-29T21:57:26.303 に答える