为什么我的ASP.. NET网页没有获取或设置我的会话变量

本文关键字:我的 设置 变量 获取 会话 ASP NET 网页 为什么 | 更新日期: 2023-09-27 18:12:50

我已经添加了一些调试代码,试图弄清楚我的Session变量发生了什么,并且它似乎总是空的。

谁能告诉我我做错了什么?

这可能是新手犯的错误,因为我不怎么做web开发。

private const string PASSWORD = "PASSWORD";
protected void Page_Load(object sender, EventArgs e) {
  if (String.IsNullOrEmpty(password)) {
    lblMessage.Text = !IsPostBack ? "Not a PostBack!" : "A PostBack.";
  } else {
    ShowData(IsPostBack);
  }
}
private string password {
  get { return Session[PASSWORD] as string; }
  set { Session[PASSWORD] = value; }
}
protected void Password_Click(object sender, EventArgs e) {
  string val = txtPassword.Text.Trim();
  if (val == ConfigurationManager.ConnectionStrings[PASSWORD].ConnectionString) {
    password = val;
    txtPassword.Text = null;
  } else {
    Response.Redirect(val);
  }
}
private void ShowData(bool postType) {
  // I would display my data here if it ever got to this point!
}

EDIT:Password_Click事件触发时,我所看到的只是"Not a PostBack!"或"a PostBack"。因此,我的Session变量不能被设置

为什么我的ASP.. NET网页没有获取或设置我的会话变量

除非您特别禁用了sessionstate(我认为您没有这样做),否则您的代码看起来不错。

我唯一能想到的是你的方法Password_Click没有被调用。

请在那里放一个断点,看看变量是否真的被设置了。如果不给我们看ASP。所以我们可以看到为什么它没有触发事件

查看您的代码,我看到可以创建此行为的唯一"问题"是这一行:

Response.Redirect(val);

我会说你正在获得重定向,因为否则你的代码对我来说似乎是正确的。

在这种情况下,Session[PASSWORD](有效的Session["PASSWORD"])获得设置的唯一方法是如果在您的web.config中有一个条目:

<configuration>
    <connectionStrings>
        <add name="PASSWORD" connectionString="xxx" providerName="<Some Provider>" />
    </connectionStrings>
</configuration>

在txtPassword控件中输入一个字符串它与web。config

中PASSWORD条目的connectionString属性中的字符串相匹配