dポイントプレゼントキャンペーン実施中!

WEB開発が初心者でいろいろ悩んでいます。

・ASP.net2.0
・C#

現在、ログインページとメインページがあります。
今後、ページが増えていくので、
メインページ内で処理していたことを全ページで使用できるように
APP_code配下へクラスを作成し、処理を移植しました。
そこで、メインページのaspx.csでは問題なく出来ていたが、APP_code配下のcsでは出来なくなってしました。

[内容]
object ses = Session["hoge"]; ←この処理が出来なくなってしまったので、下記に変更
object ses = System.Web.HttpContext.Current.Session["hoge"];
 ⇒結果は「NullReferenceExceptionはユーザーコードによってハンドルされませんでした。」
  となってしまいます。
  System.Web.HttpContext.Current.Session["hoge"]の結果はNullなのが問題だとは思うのですが、
  元のaspx.csで実装されていた時はNullであっても特に問題はありませんでした。

また、Response.Redirect("hoge.aspx")についても
System.Web.HttpContext.Current.Response.Redirect("hoge.aspx")
と修正したが、hoge.aspxへリダイレクトしません。

対処方法を教えて頂きたく思います。

A 回答 (1件)

私の環境では、


object ses = System.Web.HttpContext.Current.Session["hoge"];
のコードをApp_Code配下のクラスに記述しても例外エラーなく
処理できましたが、一般的には、現在動いているHttpContextや
HttpSessionStateをApp_Codeに引き渡すやり方が一般的なので
下記のようにしたらどうなりますか?

もちろん、そのApp_Codeに定義したクラス・コード類は、
aspxからアクセスして使用させてることが前提になりますが・・・

■App_Codeの定義
public class Class1
{
  /// <summary>
  /// ASPXより処理中スレッドのHttpContextをもらってSession処理
  /// </summary>
  /// <param name="context"></param>
  public static void SaveSession(System.Web.HttpContext context)
  {
    object ses = context.Session["hoge"];
  }

}

■App_Codeにあるコードを呼び出すaspxの例
public partial class _Default : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    Class1.SaveSession(this.Context); // staticメソッドにしてます
  }
}

これでやって頂ければ、処理中のContext(スレッド)を
引き渡して処理することになるので恐らく、NullReferenceException例外は発生しないんじゃないかと思います。

ご確認下さい。

参考URL:http://www.microsoft.com/japan/msdn/community/gd …
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2008/10/27 13:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!