Session有什么重大BUG,微软提出了什么解决方案

来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=346
GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
http://cnsendnet.taobao.com

【考点】
ASP.NET中Session的多种保存方法。
【出现频率】
★★★☆☆
【解答】
使用进程内会话状态模式时,如果aspnet_wp.exe或应用程序域重新启动,则会话状态数据将丢失。可以用Sate server或SQL Server数据库的方式存储Session的名称/值对集合,不过这些方式效率稍低,并且无法捕获Session的END事件。
【分析】
本题主要考查面试者是否能解决Session丢值问题,因为aspnet_wp.exe进程或应用程序域重新启动时,会导致Session数据的丢失。引发这种情况的原因可能为:
q 修改了Global.asax文件。
q 修改了Web.config文件。
q 更改WEB应用程序的bin目录路径。
q 杀毒软件扫描(可能发生修改)了Global.asax 文件、Web.config文件或Web应用程序的Bin目录下的文件。
q 在Web.config配置文件的<processModel>元素中,可设置导致新进程在条件被满足时启动的属性,不过这并不属于BUG。
在ASP.NET的应用程序中,Web.config配置文件中关于Session的一般设置如下:
<sessionState mode=‘InProc‘
stateConnectionString=‘tcpip=127.0.0.1:42424‘
sqlConnectionString=‘data source=127.0.0.1;Trusted_Connection=yes‘ cookieless=‘true‘ timeout=‘60‘ />
以上代码中的<sessionState />节点中有个“mode”属性,其取值可以为“InProc”、“StateServer”和“SQLServer”,默认值为“InProc”。默认值就是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),在系统发生某些意外事件时该进程可能会重启,所以造成了存储在该进程内的Session丢失。相对而言,如果“mode”属性取值为“StateServer”或“SQLServer”,即可避免进程重启后丢失Session值的情况,因为这两种方法存储Session值是进程外的。
首先将“mode”属性修改为“StateServer”。StateServer是本机的一个网络服务,在服务管理器中可以看到这个名为“ASP.NET State Service”的服务,默认情况是不启动的。如果要使用StateServer方式存储Session值,当“mode”属性修改为“StateServer”之后,编程者需要启动“ASP.NET State Service”的服务。在单击Windows XP操作系统的“开始”菜单,选择“运行”命令,输入“services.msc”,然后单击“确定”按钮即可打开服务管理器,找到如图11.3所示的网络服务,并启动该服务。
图11.3 启动ASP.NET State Service服务
除了使用图形化界面启动该服务,还可以在命令行中输入以下代码所示的命令,以启动该服务。
net start aspnet_state
现在,编程者即可利用本机的StateServer方式来存储Session值了,除非服务器重启或者“ASP.NET State Service”服务停止,否则Session值可以在超时时间内稳定地存在。编程者还可以将Session值通过其他电脑的“ASP.NET State Service”服务来保存,只需要在<sessionState />元素中修改“stateConnectionString”的属性,将IP地址修改为其他的电脑,并在其他电脑上启动“ASP.NET State Service”服务即可。通过这种操作,编程者就可以使位于不同服务器上的ASP.NET应用程序共用Session值。
如果WEB应用程序要求Session值具有更好的持久性和可靠性,即使服务器重启后Session值仍然不丢失,可以将“mode”属性修改为“SQLServer”。不仅如此,还需要修改sqlConnectionString属性,以确保正确地连接SQLServer数据库。微软提供了SQL脚本文件以创建存储Session值的数据库,该数据库名为ASPState,包含了大量被ASP.NET运行库调用的资源(如存储过程等)。把Session值存储于数据库中虽然可靠,但速度较慢。
说明:使用非进程内方法存储Session值应确保HttpSessionState对象内的自定义类型是可序列化的,即类型被标记了[Serializable]特性。

来自森大科技官方博客
http://www.cnsendblog.com/index.php/?p=346
GPS平台、网站建设、软件开发、系统运维,找森大网络科技!
http://cnsendnet.taobao.com

原文地址:https://blog.51cto.com/14036626/2468859

时间: 2024-10-31 18:07:13

Session有什么重大BUG,微软提出了什么解决方案的相关文章

微软企业级加解密解决方案MBAM架构

在之前的文章里,我给大家分享了<Bitlocker企业安全加密管理系列-1>和<Bitlocker企业安全加密管理系列-2>在这里我就不再给大家缀诉什么是MBAM了,在这里我主要给大家分享如何部署微软企业级加解密解决方案MBAM系列文章,在这里以MBAM2.5SP1为例,今天先给大家分享下架构: MBAM部署的模式有2种,一种是独立模式,一种是SCCM集成模式.2种架构图如下: 独立模式 SCCM集成模式 那么MBAM的逻辑架构是如下的: 如果您的企业需要部署MBAM的高可用架构,

微软SaaS多租户解决方案

微软SaaS多租户解决方案 docs.microsoft.com/en-us/azure/sql-database/saas-tenancy-app-design-patterns https://docs.microsoft.com/en-us/azure/sql-database/saas-tenancy-app-design-patterns https://github.com/TarsNET https://github.com/ElderJames https://github.co

Session有什么重大BUG,有什么方法可以解决

[考点]ASP.NET中Session的多种保存方法.[出现频率]★★★☆☆[解答]使用进程内会话状态模式时,如果aspnet_wp.exe或应用程序域重新启动,则会话状态数据将丢失.可以用Sate server或SQL Server数据库的方式存储Session的名称/值对集合,不过这些方式效率稍低,并且无法捕获Session的END事件.[分析]本题主要考查面试者是否能解决Session丢值问题,因为aspnet_wp.exe进程或应用程序域重新启动时,会导致Session数据的丢失.引发这

微软云灾备解决方案线下交流

2016年4月15日,与福建微软合作伙伴进行交流,在交流会上向大家介绍了:云时代下重新思考如何通过公有云实现全面可靠的存储.备份及容灾解决方案 向大家介绍了一下内容 1.现有容灾策略及挑战 2.小规模数据容灾 3.企业级数据存储及容灾 4.将 Azure 作为可扩展的容灾中心,驱动业务连续性 5.将 Azure 作为容灾引擎,驱动跨数据中心业务连续性

DBCP 1.4 BUG 导致连接池爆满解决方案

dubbo 项目用的 commons-dbcp-1.4  和  commons-pool-1.5.4 实现连接池,导致数据库经常爆满,经过调试,发现了个 dbcp的bug: dbcp 源码: BasicDataSource.java 创建datasource的方法: protected synchronized DataSource createDataSource() throws SQLException { if (closed) { throw new SQLException("Dat

(转)基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案

一.前言.提出问题 公司最近举行2011年度创新设计大赛,快年底了正打算写写2010年以来Android开发的心得与经验,正好同事出了个点子:假如A和B两个人分别在不同的地点,能不能实现这样的功能,让A和B之间可以互相感知对方的位置信息. 于是整理了一下思绪,说白了分解开来就是两个方面的问题:一.实现信息的即时传递,二.实现基站/wifi.GPS的定位. 1. 实现消息的即时传递:说到这个问题大家应该能联想到QQ.MSN.Gtalk这些即时通信软件. 2. 定位:这个让人联想到时下非常火的LBS

Web App版权保护迎来曙光,APICloud提出平台级解决方案!

随着HTML5标准的定稿,市场对HTML5的热情再次被点燃,但目前Web App和HTML5游戏存在的盗版问题和代码安全问题一直备受关注,甚至成为阻碍行业发展的一个巨大瓶颈.开发者花半年辛苦完成的产品可能盗版者只需要3天时间就可以实现完全破解. 怎么保护基于HTML5技术的互联网产品版权?如何防止网页技术代码不被人抄袭复制?开发者通常会想到网页加密的方式解决,可是目前众多的Web App代码加密方式真的能满足开发者的需求么? 现有HTML5产品和技术不能完全解决问题! 网页代码受限于浏览器解析的

微软企业级加解密解决方案MBAM用户和组

部署独立模式架构,我准备了5台计算机,分别是DC.MBAMSQL.MBAM.2台Win8.1 DC我就不多说了,域控角色,当然我的DC上也承载了我的CA角色 第一部,我们需要在AD中创建如下用户和组: MBAMSQL是我的数据库角色,数据库我采用的是SQL2012,但需要注意的是必须安装采用 SQL_Latin1_General_CP1_CI_AS 排序规则,MBAMSQL所需权限: ? SQL Server 实例登录服务器角色:dbcreator和processadmin ? SQL Serv

微软企业级加解密解决方案MBAM管理和监控服务器部署

接下来是配置WEB应用程序,在MBAM服务器上添加 强烈推荐使用证书 可以编辑写出自己公司特色的帮助提示信息 OK.下面就是验证一下我们的自助门户了 在2.5SP1之前的版本呢,如果客户端无法上网,那么打开自助门户是会报错的,原因为无法下载到所需的JavaScript文件,在2.5SP1版本中,这些文件已经内置,所以不存在这个问题,那么在2.5sp1之前的版本如果您想内置,那么需要手动处理,把附件的文件复制到 C:\inetpub\Microsoft BitLocker Management S