网站在本地运行一切正常,局域网运行也正常,今天把网站挂到外网上去,发现session失效了。
登录页面记录用户名为session,其他页面运行都要先判断session是否为null,如果为null会返回登录页面。在外网登录该网站,填完正确的用户名和密码后,会马上返回登录页面,就行刷新了一边登录页面一样。
远程服务器客服说不是他们那边的问题。
请问,到底是什么原因导致session失效?
登录页面记录用户名为session,其他页面运行都要先判断session是否为null,如果为null会返回登录页面。在外网登录该网站,填完正确的用户名和密码后,会马上返回登录页面,就行刷新了一边登录页面一样。
远程服务器客服说不是他们那边的问题。
请问,到底是什么原因导致session失效?
实在不行,就换cookie吧。。
protected void btnLogin_Click(object sender, EventArgs e)
{
try
{
Staff staff = PollManager.DAL.StaffDAL.GetModelByName(this.txtUser.Text.ToString());
if (staff == null)
{
lblMsg.Text = "不存在指定的用户!";
return;
}
string pass = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(this.txtPass.Text.ToString().Trim(), "MD5");
if (!staff.Password.Trim().Equals(pass))
{
lblMsg.Text = "密码错误!";
txtPass.Focus();
return;
}
else
{
Guid userId = staff.uid;
Session["user"] = userId; }
}
catch (System.Data.SqlClient.SqlException)
{
lblMsg.Text = "无法连接到登录服务器";
return;
} string url = (string)Request["return"];
if (String.IsNullOrEmpty(url))
{
Response.Redirect("~/Index.aspx");
}
else
Response.Redirect(url); }
protected void Page_Load(object sender, EventArgs e)
{
if (Session["user"] == null)
{
//用户未登录转到登录页面
string url = "/Login.aspx?return=" + Toolkit.GetPagePath(Request);
Response.Redirect(url);
} if (!IsPostBack)
{
Guid userId = (Guid)Session["user"];
Staff staff = PollManager.DAL.StaffDAL.GetModel(userId);
this.lbluser.Text = staff.Name; if (staff.Job.Name.Trim().Equals("管理员"))
{
this.user.Visible = false;
}
else
{
tabAdmin.Visible = false;
setTime.Visible = false;
} string endTime = System.Web.Configuration.WebConfigurationManager.AppSettings["SetEndTime"];
txtSetTime.Value = endTime;
this.lblTime.Text = "投票截止时间:" + endTime + ", 逾期视为弃权!"; }
}
如果说“根本就不存值”这个有点夸张。除非你们选择了某些实在是太烂的虚拟值主机。正常情况下,每隔10几分钟丢失一次session,这还是比较正常的。实际上在我们自己拥有的独立的服务器上,也会因为各种原因(例如上面说的各种编程设计原因)而使得session经常丢失。因为asp.net本来设计的时候就是默认假设服务程序随时重启的,这个系统的设计目的就是在系统重启时从客户端看起来感觉不到,而能够继续操作。因此编程时应该尽量避免使用session,这样才能避免出现那种“动不动就让用户重新登录”的幼稚程序。
就算此时“不发送当前页面的cookie 给浏览器”,怎么就会导致session丢失呢?
你看看吧
http://weblogs.asp.net/bleroy/archive/2004/08/03/don_2700_t-redirect-after-setting-a-session-variable-_2800_or-do-it-right_2900_.aspx