0

簡単にするために、いくつかのaspxページがあります...

Page1.aspx-セッション情報をリセットします。
Page2.aspx-結果を含むフォームを検索し、セッション変数を設定します。
Page3.aspx、Page4.aspx、Page5.aspx -Page2.aspxにセッション変数を設定する必要があります

私たちが見つけたのは、Page2.aspxがロードされ、Session変数が設定されると、Page1.aspxが呼び出され、Sessionがリセットされることです。ただし、Page1.aspxはブラウザに表示され、Page2.aspxは表示されません。コードをステップ実行し、Page1.aspxとPage2.aspxのPage_Loadイベントにブレークポイントを設定したときにのみ、これが発生していることがわかりました。Page1.aspxが処理を停止するとすぐに、Page2.aspxが処理されているのを見て驚きました。サーバ。

おそらく役立つ情報...マスターページを使用しており、マスターページにPage1.aspxへのリンクがあります。それ以外は、コードベースにPage1.aspxへの参照が見つかりません。

更新:
認証が原因である可能性がありますか?Page2.aspxにアクセスすると、サーバーがPage1.aspxで再度認証している可能性がありますか?それは典型的ですか?

4

2 に答える 2

1

アンドリューのヒントをありがとう。

何が起こっているのかを突き止めました... アプリケーションの Page1.aspx は、実際には Default.aspx です。Page2.aspx では、別の開発者が src プロパティが定義されていないページに img タグを配置しました。そのため、Page2.aspx が実行されたとき、Web サイトのルート レベルにある画像を探していたため、Default.aspx (Page1) のコードがトリガーされ、セッションが消去されました。

全体的にこんな感じでした…

Page2.aspx で

<img src=""> <!-- this ended up triggering a call to Default.aspx, wiping the session -->

うまくいけば、それが他の誰かを助けるでしょう。

于 2009-01-28T15:49:15.743 に答える
0

Fiddler を起動し、アプリケーションを通常どおり実行します。発生しているトラフィックを通知し、他のページにリダイレクトしているページを特定します。パスがわかったら、ソース コードを調べることで、そのパスが存在する理由を特定できます。

アプリケーション ドメインがリサイクルされている可能性があるため、すべてのセッション変数が失われ、セッション変数が欠落している場合に訪問者をリダイレクトするコードがおそらくありますよね?

この場合、応急処置として、StateServer を使用するか、セッション変数を Sql Server に保存できます。アプリケーション ドメインは毎分リサイクルする必要はありませんが、セッションを "処理中" (既定) に保存している場合に見られる動作が発生する可能性があります。

于 2009-01-28T05:16:53.723 に答える