`
songhongchen
  • 浏览: 121409 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

管理session状态使用StateServer模式代替InProc模式

阅读更多
开发asp.net应用时,修改web.config中的SessionState节点。
使用
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="120"/>

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

InProc模式
优点:获取session状态的速度快,session状态直接存储在iis的进程中。
缺点:易丢失,经常需要重新登录

StateServer模式
优点:session状态单独存储在一个进程中,不会因为iis或者应用的重启而丢失状态
缺点:获取session状态的速度比InProc慢一些,毕竟是两个不同的进程。

在开发的时候,对应用有一点修改,就会导致应用的重启,这时候如果使用InProc模式
,那么每次都需要重新登录,比较浪费时间.建议使用StateServer模式。并在iis里面设置超时时间长一些。

注:使用StateServer模式的时候
1、要开启“ASP.NET State Service”服务(设为“自动”)

2、如果stateConnectionString的值不是127.0.0.1或者localhost等代表本地地址的值,需要修改注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state \Parameters 节点 → 将 AllowRemoteConnection 的键值设置成“1”(1 为允许远程电脑的连接,0 代表禁止)→ 设置 Port (端口号)

3、session中存储非序列化的对象,如果违反会抛出  无法序列化会话状态。在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“Custom”模式下执行了类似的序列化,则适用同样的限制。这样的异常。如果向session存储自定义的对象,那么该对象的类上一定要加上[Serializable]注释。
1
0
分享到:
评论

相关推荐

    ASP.NET初学者练习

    InProc 时 才会引发 Session End 事件 如果会话模式 设置为 StateServer 或 SQLServer 则不会引发该事件 Application Lock ; Application[&quot;num&quot;] Convert ToInt32 Application[&quot;num&quot;] 1; ...

    C#实现简单获取及设置Session类

    主要介绍了C#实现简单获取及设置Session类,涉及C#针对session的设置及获取的技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    asp.net 跨子域共享SESSION

    解决跨子域网站之间的SESSION取值问题,简单实现,只需要改改配置文件就OK.

    聊天室系统(asp.net)

    如果会话模式设置为 StateServer // 或 SQLServer,则不会引发该事件。 Application["onlineCount"] = Convert.ToInt32(Application["onlineCount"]) - 1; Application["onlinePeople"] = Application[...

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

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

    asp.net2.0系列教程第5章_第7节

    5章_第7节 使用Session对象模拟实现购物车 Session存储模式(StateServer Sqlserver的实现)

    IIS服务器中 ASP.NET State Service 开启后 Session 仍容易丢失的问题终极解决办法

    将web.config打开,会看到有一行是&lt;sessionState mode=”InProc” stateConnectionString=”tcpip timeout=”20″/&gt;,如果没有,请在的下一行添加,再将其中的InProc改为StateServer,保存即可。 解决方法: 如果...

    C# SESSION丢失问题的解决办法

    1、在WEB.CONFIG文件中修改SESSION状态保存模式,如:&lt;sessionState mode=’StateServer’ stateConnectionString=’tcpip sqlConnectionString=’data source=127.0.0.1;Trusted_Connection cookieless=’true’ ...

    Asp.net解决session丢失问题的两种方案

    Asp.net解决session丢失问题的两种方案,以及session丢失的原因。参考一些网上资料,自己总结出来解决方案,顺便附带两个测试案例。还有不清楚的请联系我QQ:394023002 附加信息:周

    global.asax

    If session mode is set to StateServer // or SQLServer, the event is not raised. } void Application_BeginRequest(object sender, EventArgs e) { Response.Write("\t\n "+HttpContext.Current....

    协同办公,同远OA+HR+CRM综合办公管理系统源码

    同远OA+HR+CRM综合办公管理系统源码 1. 开发环境为Visual Studio 2012,数据库为SQL Server 2012 ... 若程序打开后提示缺少 SQLDMO 引用,则在...--&lt;sessionState mode="StateServer" stateConnectionString="tcpip=127.0.

    Asp.Net程序目录下文件夹或文件操作导致Session失效的解决方案

    &lt;sessionState mode=StateServer stateConnectionString=tcpip sqlConnectionString=data source=127.0.0.1;Trusted_Connection cookieless=false timeout=40/&gt; 2、在Global.asax中添加启动启动ASP.NET 状态服务...

    Session丢失的解决办法小结

    最近在做ASP.NET项目时,测试网站老是取不出Session中的值,在网上搜索了一下,找到一些解决方法,记录在这里。最后使用存储在StateServer中的办法解决了问题

    go-terraform-stateserver:terraform 状态文件的示例 HTTP 存储后端

    golang terraform 状态服务器用于检索和存储 ... 使用给定的-data_path=/data/storage状态 url http://&lt;server&gt;/folder/name-for-your-state将被扩展以将状态存储在名为/data/storage/folder/name-for-your-state 。

    java8rt.jar源码-flink-broadcast-example:示例Flink广播状态模式

    广播状态示例 这是一个正在进行的工作。 班级 类Dataserver将侦听端口 7777 上的连接,并将每秒两次向任何连接的套接字发送一个随机数 1-6。 类StateServer将侦听端口 7778 上的连接并允许在stdin上stdin整数。 输入...

    EasyPlat.net快速权限开发平台V56

    9:session设置 &lt;sessionState mode="StateServer" cookieless="false" stateConnectionString="tcpip=127.0.0.1:42424" timeout="600" stateNetworkTimeout="14400" /&gt; 10:上传员工照片 11:员工导入

    合同管理系统开发源码.net ,c#

    解压密码:qnncd 1.电脑或服务器应启动StateServer 服务 2.应用程序池: .net 2.0 经典 3.用户名:admin 密码:admin

Global site tag (gtag.js) - Google Analytics