会话状态不起作用

时间:2014-02-24 19:27:27

标签: c# .net asp.net-mvc-3

这应该显示我在这里输入文本框的信息。

protected void btnDisplay_Click(object sender, EventArgs e)
        {
            string vacations = Session["Vacations"] as string;
            string hobbies = Session["Hobbies"] as string;
            string classes = Session["Classes"] as string;

            lblDisplay.Text = "Your favorite vacations spots are: " + vacations;
            lblDisplay.Text = "Your hobbies are: " + hobbies;
            lblDisplay.Text = "Your IT Classes are: " + classes;
        }

以下是我在其他页面中用来存储会话状态信息的基本代码。我的所有页面都是相同的,只有不同的名称。

protected void btnHome_Click(object sender, EventArgs e)
    {
        Session["Vacations"] = txtVacations.Text;

        Response.Redirect("Default.aspx");
    }

我已经研究了要做什么,而且根据我的研究,这应该有效。但它显然不起作用。当我运行页面并单击按钮时,我在前一页上输入文本框的信息不会被存储。这是为什么?我做错了什么?

谢谢。

修改

这是我的web.config文件

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
  </system.web>
</configuration>

1 个答案:

答案 0 :(得分:0)

您的web.config应该包含以下内容:

<sessionState timeout="20" mode="InProc" />

超时=会话在被放弃/删除之前的时间。如果这个太低,那么可能是事情消失的原因。 20分钟是IIS中会话的默认超时

模式=会话被保持的位置,无论是在内存中还是在sql状态服务器上等等。您可能想要InProc。

InProc =会话状态正在使用ASP.NET辅助进程。这就是我想要在这种情况下使用的东西。