sessionState 配置方案之cookieless

本文详细介绍了ASP.NET中Session信息的存储方式,特别是如何在客户端启用Cookieless模式,通过修改Web.config文件将Session信息通过URL传递。此外,文章还探讨了将Session信息存储在进程内、进程外以及SQL Server中的优缺点和实现步骤,强调了ASP.NET在Session管理上的改进和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASP.NET中客户端Session状态的存储

在我们上面的Session模型简介中,大家可以发现Session状态应该存储在两个地方,分别是客户端和服务器端。客户端只负责保存相应网站的SessionID,而其他的Session信息则保存在服务器端。在ASP中,客户端的SessionID实际是以Cookie的形式存储的。如果用户在浏览器的设置中选择了禁用Cookie,那末他也就无法享受Session的便利之处了,甚至造成不能访问某些网站。为了解决以上问题,在ASP.NET中客户端的Session信息存储方式分为:Cookie和Cookieless两种。

ASP.NET中,默认状态下,在客户端还是使用Cookie存储Session信息的。如果我们想在客户端使用Cookieless的方式存储Session信息的方法如下:

找到当前Web应用程序的根目录,打开Web.Config文件,找到如下段落:

<sessionState
  mode="InProc"
  stateConnectionString="tcpip=127.0.0.1:42424"
  sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
  cookieless="false"
  timeout="20"
/>

这段话中的cookieless="false"改为:cookieless="true",这样,客户端的Session信息就不再使用Cookie存储了,而是将其通过URL存储。关闭当前的IE,打开一个新IE,重新访问刚才的Web应用程序,就会看到类似下面的样子:其中,http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx中黑体标出的就是客户端的Session ID。注意,这段信息是由IIS自动加上的,不会影响以前正常的连接。

 

更多信息如下:

125428233 【转】sessionState 配置方案

配置SQL Server Session方法

以下过程是在Win 2003 SP2 + IIS 6.0, ASP.NET 2.0, SQL Server 2005下进行的。

1. 安装Session数据库
到Framework目录

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727


运行下面的命令:

aspnet_regsql.exe -ssadd -sstype c -d [DB]   -S [Server] –E

如果想让Session数据库支持所有功能,请运行下面的命令:

aspnet_regsql.exe -ssadd -A all –E


-E是使用Windows认证,也可以使用数据库认证:

aspnet_regsql.exe -ssadd -sstype c -d [DB]   -S [Server] –U [User Name] – P [Password]


在指定的SQL Server服务器的指定数据库中建立Session数据库,可以是个单独的数据库,也就是可以是程序所用的数据库,也可以不给名字,那么会使用一个默认的数据库名称。创建完成后,在Sql Server里给上相应的帐号权限。

2. 修改web.config:

<sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="data source=[Server];initial catalog=[DB];user id=[User Name];password=[Password]"
                 cookieless="false"
                 timeout="20" />


如果使用默认的数据库名称,如下:

<sessionState mode="SQLServer" sqlConnectionString="data source=[Server];user id=[User Name];password=[Password]"
                 cookieless="false"
                 timeout="20" />


这样,程序的Session就会存储到数据库中了,有一点需要注意的是,这样配置以后,存到Session中的对象必须是可序列化的,如果是自定义的类,那么就要加上[Seriablizable]属性。

SessionState2008-06-14 22:45:57随着.net版本不断升级,sessionState配置中需要注意的问题:1、InProc模式不稳定,比如bin目录的文件更改或杀毒软件等都易导致s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值