2014-05-05 34 views
0

我在asp.net工作。我必须在处理程序中的Session中保存一个值。我这样做如何在处理程序中设置会话变量

StringBuilder sb = new StringBuilder(); 
using (SqlDataReader sdr = cmd.ExecuteReader()) 
      { 

    while (sdr.Read()) 
       { 
        sb.Append(sdr["FirstName"]).Append(" ").Append(sdr["LastName"]).Append(Environment.NewLine); 
        if (sdr["Profile_ID"] != null) 
        { 
         int yy= Convert.ToInt32(sdr["Profile_ID"]); 
         context.Session["namekiid"] = yy; 
        } 
       } 
    } 

阅读器正在读取这些值。但是当编译器出现时“context.Session [”namekiid“] = yy;”它说“对象引用未设置为对象的实例”。我跟踪这些行读者正在读Profile_ID“3”并将其保存在变量“yy”中,但是当在Session中存储此变量值时,它说“对象引用未设置为对象实例”

有什么建议吗?

+0

哪里运行这段代码? –

+0

处理程序.. ashx文件 – user3596051

+0

当ProcessRequest运行时上下文无效吗? –

回答

1

尝试这样

与我

context.Session["namekiid"] = yy; 


HttpContext.Current.Session["namekiid"]=yy; 
+0

,如果我想访问aspx.cs文件中的这个会话变量,那么我应该写什么? int id = Session [“namekiid”] ?? – user3596051

+0

它仍然说对象引用未设置为对象的实例 – user3596051

+0

我没有在我的处理程序中使用IHttpHandler,System.Web.SessionState.IRequiresSessionState,这就是为什么发生这种情况。但现在它的价值。但是,再一个问题是我想保存用户在文本框中选择其用户名的profile_id。通过上面的代码,它将在数据库 – user3596051

0

更换您此行这是因为上下文为空或context.Session为null

+0

我没有在我的处理程序中使用IHttpHandler,System.Web.SessionState.IRequiresSessionState,这就是它发生的原因。但现在它的价值。但是,再一个问题是我想保存用户在文本框中选择其用户名的profile_id。通过上面的代码,它将在数据库中选择最后一个Profile_ID – user3596051