2012-02-06 80 views
1

我在处理程序页面设置会话值,并要使用其他网页,当我在其他页面访问会话值增加一个会话值我得到错误说对象引用未设置为对象的实例。如何在asp.net页面处理和访问,在其他页面

string ad=Session["StackOverflow"].ToString(); 

如何访问会话值在C#中的.aspx页面

public class Upload : IHttpHandler, IRequiresSessionState{ 
    public void ProcessRequest (HttpContext context) { 

    context.Session.Add("StackOverflow",filename);  
}} 
+2

您是否尝试过http://stackoverflow.com/questions/1058568/asp-net-how-to-access-session-from-handler – 2012-02-06 10:33:26

回答

2

你有什么应该工作,除了它是值得注意的是,你需要包括IRequiresSessionState接口的实现。

using System.Web.Sessionstate; 

public class Handler: IHttpHandler, IRequiresSessionState 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     context.Session["YourSessionVar"] = yourStringVar; 
    } 
} 

编辑:后

后OP编辑的问题。为了访问其他网页的变量一定要在该网页上实现IRequiresSessionState了。如果你没有这样做,你将无法访问会话变量。

编辑:由OP

要求为了访问您的aspx页面上的会话变量Futher信息请执行下列操作:

using Sytem.Web.SessionState; 

public class YourClass : IRequiresSessionState 
{ 
    public string MyVar; 

    protected void Page_Load(object senser, EventArgs e) 
    { 
     MyVar = Session["YourSessionVarName"].ToString(); 
    } 
} 

我们在html/ASPX添加到您的onclick功能这页面你这样做

<div onclick="yourJScriptFunction('<% Response.Write(MyVar) %>');"> 
+0

我已经做了一些改变,以我的问题,你可以看看它的感谢 – Murthy 2012-02-06 10:29:07

+0

你提到会来约,如果你还没有设置会话变量的错误。如果尚未分配值,则会话变量将不存在。我只能建议你仔细检查一下,你是否将某些东西放入会话变量中。你的代码看起来很好,所以必须是向会话var添加null值或者不调用创建和实例化变量的代码。 – CSharpened 2012-02-06 10:30:29

+0

我创建的处理程序命名的堆栈溢出的会议上,我应该在其他地方创建会话变量,只是在分配处理程序的价值呢? – Murthy 2012-02-06 10:34:31