- 締切済み
Global.aspxでのエラー処理について
VisualStudio2010でwebページ(C#)を作成しています。 共通エラー処理を実装したいため、Global.aspxにエラー処理を記述しています。 Application_Errorには、以下のようなエラー画面への遷移を Response.Redirect(Server.MapPath("~/error/globalError.html")); のように記述しています。 また、Session_Startにユーザ情報を取得して、Sessionに格納し、 ユーザ情報にエラーがあればエラーを発生させる処理も記述しています。 ここで、Sssion_Startでエラーが発生した際、 Application_Errorでエラー画面への遷移を行い、処理を終了させたいのですが、 Session_Startイベントが再度発生してしまいます。 さらに、SessionIDは変わっていないのに、Sessionに格納したユーザ情報がクリアされています。 これはなぜなのでしょうか? 再度発生させなくする方法はありますか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- WebSurfer
- ベストアンサー率55% (33/59)
Response.Redirect(Server.MapPath("~/error/globalError.html")); でなくて、 Response.Redirect(~/error/globalError.html"); としたらうまくいきませんか? 前者はブラウザがドメインが違うと 判定して、セッションクッキーをサーバーに送ってないのではないか と思われます。
- oboroxx
- ベストアンサー率40% (317/792)
Response.Redirect()を使っているから、別セッションになるのだと思います。 Server.Transfer()を使ってみてください。
お礼
なるほど、確かにうまくいきました!! ありがとうございます。 ですが、これはなぜなのでしょうか? 普通に画面遷移するときは、Redirectでもセッションは引き継がれますよね? Global.aspxで処理しているからなのでしょうか?
お礼
返答が遅くなりすみません。 Response.Redirect(~/error/globalError.html"); でも結果は同じでした。 推測なのですが、Session_Startでエラーが発生した場合、 Sessionがまだ確立されていないことと判断されて、 Redirectにより、再度セッションを確立しようとしてしまうのではないかと。。 エラーページに飛んだときに、セッションを確立しない方法があればいいのですが・・・