`

ASP.NET中Session的状态保持方式

阅读更多

ASP.NET提供了Session对象,从而允许程序员识别、存储和处理同一个浏览器对象对服务器上某个特定网络应用程序的若干次请求的上下文信息。Session对应浏览器与服务器的同一次对话,在浏览器第一请求网络应用程序的某个页面时,服务器会触发Session_onStart事件;在对话超时或者被关闭的时候会触发Session_onEnd 事件。程序员可以在代码中响应这两个事件来处理与同一次对话相关的任务,如开辟和释放该次对话要使用的资源等。

在ASP.NET的程序中要使用Session对象时,必须确保页面的@page指令中EnableSessionState属性是True或者Readonly,并且在web.config文件中正确的设置了SessionState属性。

ASP.NET中Session的状态保持是由web.config文件中的<system.web>标记下的<sessionstate>标记的mode属性来决定的。该属性有四种可能的值:Off、Inproc、StateServer和SQlServer.

设为Off会禁用Session.

Inproc是缺省的设置,这种模式和以前的ASP的会话状态的方法是类似的,会话的状态会被保存在ASP.NET进程中,它的优点是显而易见的:性能。进程内的数据访问自然会比夸进程的访问快。然而,这种方法Session的状态依赖于ASP.NET进程,当IIS进程崩溃或者正常重起启时,保存在进程中的状态将丢失。

为了克服Inproc模式的缺点,ASP.NET提供了两种进程外保持会话状态的方法。

ASP.NET首先提供了提供了一个Windows服务:ASPState,这个服务启动后,ASP.NET应用程序可以将mode属性设置为“SateServer”,来使用这个Windows服务提供的状态管理方法。

除了在web.config文件中设置mode属性为StateServer外,还必须设置运行StateServer服务器的IP地址和端口号.如果在IIS所在的机器运行StateServer则IP地址就是127.0.0.1,端口号通常是42424.配置如下:

mode=”StateServer”

stateConnectionString="tcpip=127.0.0.1:42424"

使用这种模式,会话状态的存储将不依赖IIS进程的失败或者重启,会话的状态将存储在StateServer进程的内存空间中。

另一种会话状态模式是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,这样就可以为应用程序提供极大的可靠性。

分享到:
评论

相关推荐

    asp.net中session对象模式剖析

    在ASP.NET应用程序运行期内.不同客户的会话状态记录 可使用ASP.NET的内置对象session在服务器进行保存.本文阐 述了session不同模式的特性及具体配置方法.

    asp.net系统对象与状态保持

    asp.net系统对象与状态保持总结!!1.内置对象:page,request,response,server2.状态保持cookie,session,application

    ASP.NET状态管理(Cookies,Session,ViewState,Application...)

    ASP.NET状态管理(Cookies,Session,ViewState,Application...)

    ASP.NET WebService中使用ASP.NET_SessionId的问题说明

    今天在帮助同事解决对WebService进行 Web References 调用问题:当调用webservice第一个方法Method1发现服务端Set-Cookie: ASP.NET_SessionId=*****保存了ASP.NET的会话状态。接着当我再调用webservice的第二个方法...

    Web Service中保持ASP.net的状态

    有许多聪明的办法可以解决HTTP协议的...在ASP.net技术中提供了一个 非常有效的方案来保持状态,该方案隐藏了所有高难度的,具有挑战性的工作的细节,用户只需简单地使用 System.Web.SessionState.HttpSessionState类。

    asp.net中session的原理及应用详解

    Session简介丶特性 ——————————————————————————– 1.Session是一种Web会话中的常用状态之一。 2.Session提供了一种把信息保存在服务器内存中的方式。他能储存任何数据类型,包含自定义...

    asp.net系统对象与状态管理

    编程初学者基本知识,系统对象与状态管理,session的用处,jsp的运行机制,asp.net的运行机制等等

    Session, 面向 ASP.NET 内核的会话状态中间件.zip

    Session, 面向 ASP.NET 内核的会话状态中间件 会话AppVeyor: : 包含用于 ASP.NET 内核的会话状态中间件的库。对于 ASP.NET 4.x 会话状态,请转到 https://github.com/aspnet/AspNetSessionState 。这里

    asp.net配置会话状态Session实现代码

    sessionState timeout=”timeout in minutes” cookieless=”[true|false]” mode=”Off|InProc|StateServer|SQLServer” stateConnectionString=”tcpip=server:port” stateNetworkTimeout=”for network ...

    ASP.NET应用开发案例教程

    8.3 ASP.NET应用程序中的用户状态管理 8.3.1 Global.asax文件概述 8.3.2 Application对象事件 8.3.3 Session对象事件 8.3.4 其他几种客户端的用户状态管理方法 8.3.5 本小节提示 8.4 ASP....

    Asp.net在ashx文件中处理Session问题解决方法

    Asp.net在ashx文件中处理Session问题解决方法,需要的朋友可以参考一下

    asp.net知识库

    在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET 2.0 绑定高级技巧 简单实用的DataSet更新数据库的类+总结 [ADO.NET]由数据库触发器引发的问题 为ASP.NET封装的SQL数据库...

    ASP.NET应用与开发案例教程

    8.3ASP.NET应用程序中的用户状态管理 8.3.1Global.asax文件概述 8.3.2Application对象事件 8.3.3Session对象事件 8.3.4其他几种客户端的用户状态管理方法 8.3.5本小节提示 8.4ASP.NETHTFP运行情况 8.4.1HTYP运行‘晴...

    在ASP.NET Web Services中使用Session

    在ASP,NET Web Services中如何来设定使用Session(HttpSessionState),以厦ASP.NET Web Services的客户端该如何才能让此Session正常运作采雏护状态

    asp.net教学讲义

    第五章:ASP.NET状态管理 80 5.1 状态管理概述 80 5.2 存储状态的位置 80 5.3 Application—管理应用程序状态 80 5.4 应用程序事件 81 5.5 Lock和UnLock方法 81 5.6 添加、更新和移除Application状态项 81 5.7 ...

    ASP.NET.4揭秘

    9.3 在sqldatasource控件中使用asp.net参数308 9.3.1 使用asp.net参数对象308 9.3.2 使用asp.net的controlparameter对象311 9.3.3 使用asp.net的cookieparameter对象315 9.3.4 使用asp.net的formparameter对象317 ...

    ASP.NET教学讲义,完整章节

    第五章:ASP.NET状态管理 89 5.1 状态管理概述 89 5.2 存储状态的位置 89 5.3 Application—管理应用程序状态 89 5.4 应用程序事件 90 5.5 Lock和UnLock方法 90 5.6 添加、更新和移除Application状态项 90 5.7 ...

    ASP.NET 控件的使用

    9.3 在SqlDataSource控件中使用ASP.NET参数 271 9.3.1 使用ASP.NET参数对象 272 9.3.2 使用ASP.NET的Control-Parameter对象 274 9.3.3 使用ASP.NET的Cookie-Parameter对象 277 9.3.4 使用ASP.NET的Form-Parameter...

Global site tag (gtag.js) - Google Analytics