C# 在会话中保存已创建的对象

C# 在会话中保存已创建的对象,c#,asp.net,session-state,C#,Asp.net,Session State,我试图创建一个对象,然后将其保存在会话中,然后重定向到另一个页面并使用会话中保存的对象 这是我的代码,它似乎是错误的地方,因为它是不可操作的 第1页 public FitnessClassOpportunity GetData() { return new FitnessClassOpportunity(txtId.Text, txtDescription.Text, txtLocation.Text,

我试图创建一个对象,然后将其保存在会话中,然后重定向到另一个页面并使用会话中保存的对象

这是我的代码,它似乎是错误的地方,因为它是不可操作的

第1页

 public FitnessClassOpportunity GetData()
    {

        return new FitnessClassOpportunity(txtId.Text, txtDescription.Text, txtLocation.Text, 
                                           Convert.ToInt32(tx2.Text), dropDownDay.SelectedItem.ToString(), 
                                           txtTime.Text, Convert.ToInt32(txtDuration.Text), CheckBox1.Checked, 
                                           txtDatecompleted.Text, txtNumSession.Text);

    }



 protected void Button1_Click(object sender, EventArgs e)
    {
//result from breaking point: f has the data
            FitnessClassOpportunity f = GetData();
//result from breaking point: f still has the data but Session is still NULL
        Session["object"] = f;
         Response.Redirect("Default.aspx");
    }
第2页

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {

        }
        else 
        {
//add the object from the session to a list
      fitnessClassList.addFitnessClass((FitnessClassOpportunity)Session["object"]);
            UpdateListbox();
        }
      }

如果执行重定向,则不再是回发,并且不会执行将对象添加到列表中的代码。运行调试器,您将看到

编辑: 会话状态可能已禁用。在web.config中设置此选项(应为默认值):


...

什么是
fitnessClassList
以及
addFitnessClass
是什么?您是否收到任何错误?您确定重定向被视为回发吗?我的猜测是代码根本没有执行。我认为您应该将addFitnessClass&UpdateListbox代码移动到if.fitnessClassList的then分支,它是一个对象列表。我没有得到任何错误,只是执行代码时什么也没有发生,因为会话是空的。我甚至不能得到进一步的(转到另一页使用重定向)谢谢你。我主要担心的是会话没有接受我传递给它的值(F变量)。您是否在web.config中启用了会话状态?如果会话为null,会话[“object”]将引发异常。如果是,则您已关闭sessionState。它不会。我甚至没有得到任何错误,只是没有将F中的值赋给Session变量。我认为会话状态是自动启用的。我没有启用它,不是说我知道如何启用它,但是..这个任务真的很奇怪,我不明白为什么它没有将信息从f传递到Session如果你说Session为null(在对Henk Holtermann的评论中),那么它将被关闭并抛出异常。将sessionState元素添加到配置中,然后重试。
<system.web>
  <sessionState mode="InProc"/>
  ...
</system.web>