由于session随时会丢失,请教一下各位高手是怎么保存用户登陆信息的?
我用cookies保存用户名和密码,
登陆后用session保存用户名,但很session随时都会丢失的,那样又要登陆了,好麻烦!
请问一下有什么好的办法解决这个问题?
------解决方案--------------------cookie+session
------解决方案--------------------session怎么个容易丢失法?设置有效时间setTimeOut?
------解决方案--------------------昏倒,你把setTimeOut=“时间”改了。就是时间改长点就好了啊
------解决方案--------------------session很容易丢吗?
------解决方案--------------------session很容易丢吗?
------解决方案--------------------setTimeOut
------解决方案--------------------Session随时会丢失?.
不过也没错,本来.net的session是不稳定,你把时间设一下
------解决方案--------------------session和cookie结合
------解决方案--------------------用隐藏的label来保存
------解决方案--------------------
------解决方案--------------------session丢失除了设置过期时间之外,还有个重要因素是IIS的设置!因为如果服务器会监视所有的进程,发现谁变大了就会收缩它。
------解决方案-------------------- SessionState 的Timeout,其主要原因有三种。
一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。
二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。
三:程序有框架页面和跨域情况。
第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)
第二种是检查代码有无Session.Abandon()之类的。
第三种是在Window服务中将ASP.NET State Service 启动。
------解决方案--------------------用数据库来保存session就不会丢了,教lz一种方法,保准管用:
1.在web.config里设置mode=SQLServer,并用数据库来保存session;如:
<sessionState mode="SQLServer"
cookieless="true" sqlConnectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"
timeout="20"/>
2.在运行 SQL Server 的计算机(它将存储会话状态)上运行 InstallSqlState.sql(默认的安装位置为 <驱动器>:\systemroot\Microsoft.NET\Framework\version)。这将创建一个名为 ASPState 的数据库,该数据库具有新的存储过程并且在 TempDB 数据库中具有 ASPStateTempApplications 表和 ASPStateTempSessions 表。
参见:http://www.ninedns.com/asp.net/2007102514908.html
------解决方案--------------------
------解决方案--------------------C# code
public static void GetUserInfo()
{
HttpContext context = HttpContext.Current;
//每个页面都检查session,如果session为null,则重新获取,适用于使用Form验证的方式
if (context.Session["userinfo"] == null)
{
UserInfo userinfo = new UserInfo();
context.Session["userinfo"] = userinfo;
if (context.Request.IsAuthenticated)
{
userinfo = Func_GetUserInfo(context.User.Identity.Name);
if (userinfo.user_id.Trim().Length>0)
{
context.Session["userinfo"] = userinfo;
}
else
{
//如果用户不存在了,则注销验证信息
System.Web.Security.FormsAuthentication.SignOut();
}
}
}
}
------解决方案--------------------
对于“Session过期”的问题,我基本上是建议大家去考虑资源稍微差一些的“生产服务器”的状况,也就是说现在就去租一个网站空间然后部署一个比较好玩的asp.net应用去体验体验。如果就是用自己的单机,或者局域网里的自己的服务器做标准,很可能做出来的程序只能用在那种特定的服务器环境下,而可靠性不高。