1

Global.asax の Application_Error メソッドで、セッション状態から値を取得しようとしています。

例外をスローする限り、セッション状態にアクセスできます。例えば:

thow new Exception("Test exception");

ただし、未処理の例外である場合、セッション状態にアクセスしようとすると、「このコンテキストではセッション状態を使用できません。」というエラーが表示されます。

動作の違いはなぜですか?回避策はありますか?

ありがとう。

4

2 に答える 2

2

私は時々ASP.NETが嫌いです...

したがって、次を使用してエラーを生成します。

Response.Redirect("thispagedoesnotexist.aspx", false); 

上記の行は、セッション状態が利用できない Application_Error にリダイレクトします

でも

throw new Exception("test");

上記の行は、セッション状態 AVAILABLE で Application_Error にリダイレクトします

したがって、これをすべて Application_Error で行うのではなく、コード全体で try/catch を使用してエラーをキャッチする必要があります。次に、セッション、ログ、および電子メール エラーの詳細からデータを収集し、最後にわかりやすいエラー ページにリダイレクトします。余分なコードがたくさん..

結論: Application_Error は価値がありません。

于 2008-11-19T18:59:23.437 に答える
0

HttpContext.Current.Session を介してセッションにアクセスしようとしていると思います。動作の違いは、未処理の例外ハンドラーで、リクエストが「フェイルセーフ」モードになり、ページのライフサイクル (セッションの読み込みと破棄を含む) が終了したことだと思います。

詳細については、ライフサイクルに関するこのページをご覧ください

于 2008-11-19T04:10:27.053 に答える