会话变量被不相关的方法破坏

时间:2012-01-30 23:04:12

标签: c# asp.net session

我有一个完全令我难以置信的问题,因为它完全没有意义。好吧,正如我所理解并在过去使用的那样,通过会话将变量从一个页面传递到另一个页面,您只需说

  

Session [“variableName”] = value;

然后在接收页面中使用它,它类似于:

  

string container = Session [“variableName”]。ToString();

右?花花公子。在我的代码中(至少这个特定的应用程序,无论如何),我发现如果我的代码隐藏的page_load中有一个方法,我就无法设置任何会话变量:

    protected void Page_Load(object sender, EventArgs e)
    {
        Session.Add("values", "It Worked");
        LoadAvailableItems();        
    }

这将导致应用程序不将变量传递给下一页。但是,如果我删除LoadAvailableItems()方法,它将正常工作。所以现在你会问我“好的,所以请告诉我们这个方法的内容”。它只是为控件运行虚拟数据的测试连接:

//test connection DELETE ME
        string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
            + Server.MapPath("App_Code/temp/cokeDb.mdb") + ";Persist Security Info=False;";
        OleDbConnection conn = new OleDbConnection(connString);
        string sql = "select docNum, docName from lut_docs order by docNum";
        OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
        DataSet ds = new DataSet();

        conn.Open();
        da.Fill(ds);
        conn.Close();

        cblstAvailableItems.DataSource = ds;
        cblstAvailableItems.DataTextField = "docName";
        cblstAvailableItems.DataValueField = "docNum";
        cblstAvailableItems.DataBind();
        //end test connection

从我能够将其缩小到通过注释掉块并运行应用程序,我认为它与此块有关:

conn.Open();
da.Fill(ds);
conn.Close();

现在为什么这会导致问题,我丝毫不明白。如果有人可以向我解释这一点,我可以不要把头伸进墙里。

0 个答案:

没有答案
相关问题