为什么我的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变量不能被设置
除非您特别禁用了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