ASP.NET Session丢失问题解决方案总结及判断Session是否过期【转载】

判断Session是否过期:

通过BasrPage或IHtttpMoudle实现
public class BasePage : System.Web.UI.Page
    {
      public  BasePage()
      {

 

      }

      protected override void OnInit(EventArgs O)
      {
          if (base.Session["UserId"] == null || base.Session["UserId"].ToString().Equals(""))
          {
              Response.Redirect("~/Error.aspx");
          }
      }
    }

if(Session["user"]==null)
{
this.Response.Redirect("Error.aspx");
}
<customErrors mode="RemoteOnly" defaultRedirect="Error.aspx">
</customErrors>

 

 

Session丢失问题解决方案总结:

1  <sessionState mode="InProc" cookieless="false" timeout="60"></sessionState>
 这个是可以解决超时问题的,但是这个极不安全,vs.net默认设置
 相当于把session交给IIS的进程管理,IIS的不稳定性将导致Session频繁丢失 
 
2 sessionState mode=StateServer是建立独立的Session的服务进程管理方式模式,
 这样不受IIS的进程本身的不稳定影响,不容易导致session丢失,
 这样可以实现多个asp.net的站点的session 共享。

在web.config文件中设置mode属性为StateServer外,要启动 管理工具-服务-ASP.NET state service 项了。还必须设置运行StateServer服务器的IP地址和端口号.如 果在IIS所在的机器运行StateServer则IP地址就是127.0.0.1,端口号通常是42424.配置如下:
  <sessionState mode=”StateServer”
  stateConnectionString="tcpip=127.0.0.1:42424".....>
  使用这种模式,会话状态的存储将不依赖IIS进程的失败或者重启,会话的状态将存储在StateServer进程的内存空间中。

3 SQLServer模式。这种模式是将会话的状态保存在SQL Server数据库中的。使用这种模式前,必须至少有一台SQL Server服务器,并在服务器中建立需要的表和存储过程。.NET SDK提供了两个脚本来简化这个工作:InstallSqlState.sql和UnInstallSqlState.sql。这两国文件存放在下面路径 中:

  <%SYSTEMDRIVER%>\Winnt\Microsoft.NET\Framework\<%version%>\
  要配置SQL Server 服务器,可以在命令行中运行SQL Server提供的命令行工具osql.exe
  osql -s [server name] -u [user] -p [password] <InstallSqlState.sql
  例如:osql -s (local) -u as -p “”-i InstallSqlState.sql
  做好必要的数据库准备工作后,将web.config文件中的sessionstate元素的mode属性改为”sqlserver”,并指定SQL连接字符串。具体如下:
  mode="SQLServer"
  sqlConnectionString="data source=127.0.0.1;userid=sa;password=;Trusted_Connection=yes"
  使用SQLServer模式处了可以使Session的状态不依赖于IIS服务器之外,还可以利用SQL Server的集群,使状态存储不依赖于单个的SQL Server,这样就可以为应用程序提供极大的可靠性。

转载于:https://www.cnblogs.com/nokki/archive/2010/07/19/1780918.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值