2012-02-06 79 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