网站建设
  简约型网页设计套餐998
  实惠型网站建设套餐2580
  综合型网站制作套餐4980
  网站改版与网站维护
  行业网站建设方案
  大型网站建设解决方案
  企业网站建设流程
  帝网科技网站设计与网站制作
建站FAQ
·网站空间问题解答
·企业邮箱问题解答
 
酷站欣赏
·房产酷站(379)
·综合门户(8 9)
·建筑装饰(603)
·手机通讯(354)
·生活购物(376)
·医疗保健(199)
·文化摄影(602)
·休闲体育(399)
>>更多酷站欣赏
网站优化
·Google(谷歌)优化   ·百度(BaiDu)优化
·雅虎(Yahoo)优化    ·Alexa排名优化   
·Google AdSense   ·DMOZ目录提交  
建站知识
·网站建设知识·网站名词解释·网站运营知识
·网络营销知识·搜索引擎知识·实用技术文摘
网站推广
百度网站推广 google网站推广
搜狐网站推广 网易网站推广
新浪网站推广   雅虎网站推广
  您当前位置: 当前位置:帝网科技 >> web开发 >> .NET专栏 >> 浏览文章
 
 
认识asp.net会话状态
作者:袁袁整理 来源:帝网科技 日期:2008年11月28日 点击数:



一、会话状态的功能

 HTTP 是一个无状态的协议,所以它不自动指示一个请求序列是否都来自相同的客户端,甚至不指示单个浏览器实例是否仍活跃地查看某个页或站点。而使用ASP.net内置的会话状态功能,可以使用我们做到

1、对从单个浏览器客户端到服务器上逻辑应用程序会话的请求进行自动识别和分类。

2、将会话范围的数据存储在服务器上以供跨多个浏览器请求使用。

3、引发适当的可在应用程序代码中处理的会话生存期管理事件(Session_OnStart、Session_OnEnd 等)

二、会话状态的标识

在创建会话时,服务器会为每一个会话生成一个单独的标识。该标识用 120 位的 SessionID 字符串表示,该字符串只包含 URL 中所允许使用的 ASCII 字符。SessionID 值是使用保证唯一性和随机性的算法生成的,其中保证唯一性的目的是确保会话不冲突,保证随机性的目的是确保怀有恶意的用户不能使用新的 SessionID 来计算现有会话的 SessionID。

三、会话状态的存储方式

会话状态有三种存储方式

1、进程内会话状态模式(Inproc):当我们新建一个Web程序后默认的采用的进程内会话状态模式,这也是大家所普遍采用的模式。在这种模式下会话状态存储在本地的 ASP.NET 辅助进程中,可以说到目前为止,进程内会话状态模式可能是最快的访问选项。但会话中存储的数据越多,Web 服务器所消耗的内存就越多,这样会潜在地增加性能降低的风险。

2、.NET 状态服务器模式(StateServer):会话状态存储在远程进程中(例如,名为 aspnet_state.exe的 indows NT 服务中)

3、SQL 模式(SQLServer):会话状态存储到由 SQL Server 管理的专用数据库表中。

.NET 状态服务器模式和SQL 模式都可以称为进程外会话模式,当储存数据时,需要将数据序列化储存到外部储备库,当读取和数据时,需要将数据反序列化,复制到本地会话词典中,所以请求导致性能下降了 15%(进程外)到 25% (SQL Server)。注意这只是一种粗略的估计。但是在进程外存储方案中,会话状态存活的时间较长,使应用程序的功能更强大,因为它可以防止 Microsoft? Internet 信息服务 (IIS) 和ASP.NET 失败。通过将会话状态与应用程序相分离,您还可以更容易地将现有应用程序扩展到 Web Farm 和 Web Garden 体系结构中。另外,会话状态存储在外部进程中,从根本上消除了由于进程循环而导致的周期性数据丢失的风险。

四、会话状态的配置

会话状态的配置是通过设置Web.config文件的<sessionState>节来实现的。下面介绍一下三种会话状态的具体配置方法

1、进程内模式

进程内模式是默认的会话状态模式。若要使用进程内模式,请将 <sessionState> 元素的 mode 属性设置为 Inproc。

下面显示了进程内模式的一个配置设置示例。 http://www.knowsky.com

以下为引用的内容:

  <configuration>
  <system.web>
  <sessionState mode="Inproc"
  cookieless="false"
  timeout="20"/>
  </sessionState>
  </system.web>
  </configuration>
 

2、状态服务器模式

若要使用状态服务器,必须首先确保 ASP.NET 状态服务运行在用于会话存储的远程服务器上。此服务与ASP.NET 和 Visual Studio .NET 一起安装在以下位置:

以下为引用的内容:

systemroot\Microsoft.NET\Framework\versionNumber\aspnet_state.exe
 

然后,在应用程序的 Web.config 文件中,将 <sessionState> 元素的 mode 属性设置为 StateServer。最后,将 connectionString 属性设置为 tcpip=serverName:portNumber。

下面是状态服务器模式的一个配置设置示例。

以下为引用的内容:

  <configuration>
  <system.web>
  <sessionState mode="StateServer"
  stateConnectionString="tcpip=dataserver:42424"
  cookieless="false"
  timeout="20"/>
  </sessionState>
  </system.web>
 

3、SQL Server 模式

若要使用 SQL Server,首先在将存储会话状态的 SQL Server 计算机上,运行 InstallSqlState.sql 或 InstallPersistSqlState.sql。两个脚本均创建一个名为 ASPState 的数据库,它包含若干存储过程。

两个脚本间的差异在于放置 ASPStateTempApplications 和 ASPStateTempSessions 表的位置。InstallSqlState.sql 脚本将这些表添加到 TempDB 数据库,该数据库在计算机重新启动时将丢失数据。相反,InstallPersistSqlState.sql 脚本将这些表添加到 ASPState 数据库,该数据库允许在计算机重新启动时保留会话数据。

默认情况下,两个脚本文件均安装在下面的位置:

systemroot\Microsoft.NET\Framework\versionNumber

然后,在应用程序的 Web.config 文件中,将 <sessionState> 元素的 mode 属性设置为 SQLServer。最后,将 sqlConnectionString 属性设置为 Integrated Security=SSPI;data source=serverName;。

  相关文章
 
·ASP.NET使用log4Net日志组件教程(日志
·ASP.NET MVC 框架
·C#实现的BinaryTree
·WebForms使用System.Web.Routing
·ASP.NET获取远程网页下载到本地文件
·一个“简单”的ASP.NET的服务器控件
·ASP.net与PHP两大网站开发架构优势对比
·教你七招提高.NET网站性能
·ASP.NET未来:简化开发 HTML5性能提升
·ASP.NET实现类似Excel的数据透视表
·FileUpload上传多文件出现错误的解决方
·.NET从优酷专辑中采集所有视频及信息(
·ASP.NET 4中的SEO改进
·详解Asp.net MVC DropDownLists
·提高ASP.NET应用程序性能的几招方法
·asp.net实现51job地区选择效果
·ASP.NET中创建GeoRSS订阅源
·ASP.NET 4.0开发更加简便
·ASP.NET页面间数据传递的方法
·ASP.NET的SEO:使用.ashx文件——排除
 
 

公司环境 | 合作伙伴 | 人才招聘 | 付款方式 | 关于我们

地址:广州市天河区中山大道中120号D805 电话:020-82529556 传真:020-82529556
广州帝网网络科技有限公司 版权所有 粤ICP备08119341号