0

Web サイトで発生している問題の 1 つをデバッグするのに問題があります。これが問題です。従業員の写真と従業員に関連する情報を含む Web ページがあります。ユーザーが当社の Web サイトにログインすると、セッション中の従業員の詳細が保存されます。従業員の写真の画像 URL を次のように設定しています。

imgEEPhoto.ImageUrl = imgPhoto.aspx?Company=XXXX&Empno=YYYY. 

ページ imgPhoto.aspx 内で、そのユーザーのセッションが有効かどうかを確認しています。従業員の写真があるページにログインすると、写真が表示されないことがあります。imgPhoto.aspx ページ内でセッションが生きているかどうかを確認しているためです。セッションがアクティブな場合もあれば、セッションがアクティブでない場合もあります。セッションを非同期的に null に設定する機能があるようです。その機能を追跡する方法がわかりません。そのため、imgPhoto.aspx ページ内で、これまでに実行されたすべての関数のリストを取得できれば、セッションをリセットしている関数を追跡できると考えています。これを見つける方法はありますか?

この問題をデバッグする別の方法がない場合は、お知らせください。

編集:

ページ imgPhoto.aspx は、company と empno をクエリ文字列パラメーターとして取得します。次に、ページは company と empno に基づいてバイナリ データを取得し、Response.BinaryWrite() を使用して写真を表示します。セッション チェックは、この関数の先頭にあります。したがって、この関数が呼び出される前のどこかで、メインページのすべての関数が終了した後、セッションがタイムアウトになります。セッションIDを出力できるため、実際にタイムアウトになっているかどうかはわかりません。しかし、セッションに保存されている変数にアクセスできません。

関数内のコールスタックを出力すると、そのページ内で実行される関数のリストが表示されます。その関数の前に実行されるすべての関数を提供しているわけではありません。

4

3 に答える 3

0

.NET には、呼び出されたすべての関数を一覧表示する組み込み機能はありませんが、特定の時点で呼び出しスタックを出力できます (例外のように)。

これがあなたがたどりたいルートである場合は、コードカバレッジプロファイラーを探すことをお勧めします。

于 2009-01-27T17:12:46.697 に答える
0

私が問題を理解していれば、imgphoto.aspx は URL を含む文字列を作成し、それを送り返していますよね? その場合、imgPhoto.aspx を変更して、確実に存在することがわかっている画像のハードコードされた URL を常に返すようにすると、まだ問題がありますか?

まず、誤った形式の URL や存在しない写真の URL を誤って送り返していないかどうかを除外したいと思います。セッションをチェックせずに最初にこれを試して、問題を再現できない場合 (つまり、常に機能する場合)、セッション チェックを追加し、それでも静的 URL を送り返し、問題がその方法で複製できるかどうかを確認します。 .

私は常に「簡単な」ことを最初に除外しようとします - おそらくあなたはすでにそれを行っていますか?

于 2009-01-27T17:25:13.473 に答える
0

問題が断続的であるように聞こえますが、おそらくセッション状態がタイムアウトしていますか? セッションがいつ終了したかを正確に知るために、Global.asax ファイルの Session_End メソッドでセッションが終了したときにログを記録できます。次のように、セッション タイムアウト (デフォルトは 20 分) の解像度を増やしてみることができます。

Timeout プロパティは Web.config ファイルで設定できます

<SessionState timeout = "30" />

または、アプリケーション コードを使用して Timeout プロパティの値を直接設定できます。

Session.Timeout = 30
于 2009-01-27T17:38:15.197 に答える