前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET中的会话状态模式详解

ASP.NET中的会话状态模式详解

作者头像
小明爱学习
发布2019-01-07 13:25:49
1.7K0
发布2019-01-07 13:25:49
举报

在ASP.NET中我们都会用到Session,但是Session存在哪里你们知道吗,今天我们就来了解一下。

在ASP.NET中4中存储Session的模式,如下:

1.InProc 模式,此模式将会话状态存储在 Web 服务器上的内存中。这是默认设置。 2.StateServer 模式,此模式将会话状态存储在一个名为 ASP.NET 状态服务的单独进程中。这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。 3.SQLServer 模式将会话状态存储到一个 SQL Server 数据库中。这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。 4.Custom 模式,此模式允许您指定自定义存储提供程序。

然后我们可以通过配置Web.config文件来指定Session所使用的模式。如果不配置则默认使用InProc模式。

1.InProc模式

此模式将Session存在本地IIS服务器的内存中,如果程序中需要使用到Session_OnEnd事件,那就必须要使用此模式;由于ASP.NET模式就是此模式,

所以使用此模式不需要在Web.config中进行相关配置。

2.StatServer模式

StateServer模式将Session存储在ASP.NET状态服务的进程中 ,使用此模式,可以保证在重启iis站点之后,Sessino不会丢失。

使用此服务,首先先开启ASP.NET状态服务,在计算机服务里可找到这个服务。

然后在<system.web>节点下加入以下节点配置。

<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="20"/>

端口42424为默认端口,要在服务器上改变端口,可HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters注册表项中的Port值。

如果stateConnectionString的值为其他服务器,则登陆此服务器,修改注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state \Parameters节点将 AllowRemoteConnection 的键值设置成1(1代表允许远程连接)然后 设置 Port (端口号)

3.SqlServer模式

使用此模式,首先得安装Sql Server客户端,此模式把Session存到一个数据库中,本站使用的就是此模式;

使用此模式还得建立ASPState数据库,不过创建的数据库的sql语句就在你本机就能找到,目录为:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallSqlState.sql

运行此sql语句,数据库就创建好了,不过还没有表,你也不用担心,表也给你准备好,打开cmd窗口,运行如下命令:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe  -ssadd -sstype p -S (local) -U sa -P '密码'

这样表也给你建好了。然后配置节点。

<sessionState mode="SQLServer" sqlConnectionString="data source=.;user id=sa;password=111111" cookieless="false" timeout="20" />

由于第四种模式Custom我本人没测试过,个人感觉也没太大必要,所以不做描述。

总结:

1.InProc模式:方便,读取速度快,不过由于是存在本机内存中,所以网站访问量过大,势必会给内存很大压力

2.StateServer模式:使用StateServer模式数据也是存于内存中,所以在使用StateServer 模式,我一般为远程服务器处理,这样来解决内存压力,由于是远程服务器,读取数据的速度会比InProc模式慢一点

3.SqlServer模式:使用此模式,数据存于数据库,肯定会减轻内存压力,在没有多余服务器来使用StateServer模式的情况下,此模式为不错的选择,注意此模式也可用于远程SqlServer服务器。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档