估算是系统大气利用了Session,老是数据丢失

下三17日收到一人从事电子产品生产的大学同学的QQ说她的三个E帕杰罗P系统不符合规律,帮他看看,周末她苏醒详细的问询了弹指间情状:周二到礼拜天应用的用户数是10-20个人,系统慢起来便是我们一起慢,人数少的时候极快,此外二个揪心的题目正是豪门还要利用的运用平常无故的脱离,而且她还强调了她买的是2个有力的服务器了,系统运作了2年岁月,数据量也非常小。

上周接到一人从事电子产品生产的高等高校校友的QQ说他的2个ELacrosseP系统有标题,帮她看看,
周末她苏醒详细的问询了须臾间状态:周六到周四利用的用户数是10-21人,系统慢起来就是大家一块慢,人数少的时候相当慢,其余贰个担心的题材就是豪门同
时使用的应用常常无端的淡出,而且她还强调了他买的是3个无敌的服务器了,系统运作了2年岁月,数据量也非常小。

关于c# SESSION丢失难点化解办法

 

我们在用C#开发顺序的时候平时会碰着Session很不安宁,老是数据丢失。上边正是Session数据丢失的化解办法希望对你有便宜。

① 、在WEB.CONFIG文件中期维修改SESSION状态保存格局,如:<sessionState
mode=’StateServer’ stateConnectionString=’tcpip=127.0.0.1:42424′
sqlConnectionString=’data source=127.0.0.1;Trusted_Connection=yes’
cookieless=’true’ timeout=’180’/> 

贰 、运维系统服务“ASP.NET状态服务 ”,系统暗中同意是手动运营的 

③ 、假若SESSION中保留的数据类型是自定义的,如结构,请在自定义数据类型处系列化会话状态,即在类或组织评释前加[Serializable] 

成就上述3部,状态即可保存,不过在造访页面是浏览器突显的不二法门中扩充了一段字符,如:(S(lto3j0eg25cztmqtxevm5tb4)) 

近些年在做ASP.NET项目时,测试网站老是取不出Session中的值,在网上搜索了一下,找到一些消除方法,记录在此地。最终选择存款和储蓄在StateServer中的办法化解了难点。 

SessionState 的Timeout),其根本缘由有三种。 
一:有个别杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,那是微软的布道。 
二:程序内部里有让Session掉失的代码,及服务器内部存款和储蓄器不足发生的。 
三:程序有框架页面和跨域境况。 
第二种化解办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运转时协调也并非去编辑它) 
第贰种是反省代码有无Session.Abandon()之类的。 
其三种是在Window服务准将ASP.NET State 瑟维斯 运维。 

上边是赞助中的内容: 
(ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconsessionstate.htm) 
ASP.NET 提供1个大概、易于使用的对话状态模型,您能够运用该模型跨多少个 Web
请求存储任意数据和指标。它使用基于字典的、内部存款和储蓄器中的对象引用(那几个目的引用存在于
IIS
进度中)缓存来成功该操作。使用进程内会话状态情势时请考虑上边包车型客车范围: 

行使进度内会话状态格局时,假如 aspnet_wp.exe
或应用程序域重新起动,则会话状态数据将遗失。这么些再一次开动平日会在底下的场所中生出: 
在应用程序的 Web.config 文件的 <processModel>
成分中,设置三个导致新历程在尺度被满意时运营的品质,例如
memoryLimit。 
修改 Global.asax 或 Web.config 文件。 
变动到 Web 应用程序的 \Bin 目录。 
用杀毒软件扫描并修改 Global.asax 文件、Web.config 文件或 Web 应用程序的
\Bin 目录下的公文。 
一经在应用程序的 Web.config 文件的 <processModel>
成分中启用了互连网园形式,请不要使用进度内会话状态情势。不然将发生随机数据丢失。 

还有那二种: 

一:在率先个页面置了SESSION,然后REDIRECT去第3个页面。化解方法是在REDIRECT中设置endResponse为FALSE。 

二:
ASP.NET中央银行使了ACCESS数据库,而且数据库是放在bin目录中的。解决措施是决不放会更新的公文在BIN目录中。 

参考:http://www.dotnet247.com/247reference/msgs/58/290316.aspx 

Asp.net 暗中认可配置下,Session莫名丢失的原由及消除办法 

例行操作情状下Session会无故丢失。因为程序是在不停的被操作,排除Session超时的或然。其它,Session超时时间被设定成60分钟,不会那样快就超时的。 

本次到CSDN上搜了一晃帖子,发现许五个人在商讨那个题材,然后笔者又google了弹指间,发现微软式网球站上也有类似的始末。 

当今自己就把原因和平消除决办法写出来。 

原因: 

出于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,它能够有3种取值:InProc、StateServer?SQLServer(大小写敏感)
。私下认可情况下是InProc,也正是将Session保存在经过内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),那一个历程不安静,在一些事件发生时,进度会重起,所以导致了仓库储存在该进程内的Session丢失。 

怎么样情状下该进度会重起呢?微软的一篇小说告诉了咱们: 
壹 、配置文件中processModel标签的memoryLimit属性 
二 、Global.asax只怕Web.config文件被更改 
三 、Bin文件夹中的Web程序(DLL)被改动 
肆 、杀毒软件扫描了一部分.config文件。 
更加多的音讯请参见PRB: Session variables are lost intermittently in
ASP.NET applications 

化解办法: 

前边说到的sessionState标签中mode属性可以有八个取值,除了InProc之外,还足以为StateServer、SQLServer。那三种存Session的不二法门都以进程外的,所以当aspnet_wp.exe重起的时候,不会潜移默化到Session。 

现在请将mode设定为StateServer。StateServer是本机的1个服务,能够在系统服务里见到服务名为ASP.NET
State
Service的劳务,暗中认可情形是不运营的。当大家设定mode为StateServer之后,请手工业将该服务运行。 

那样,大家就能动用本机的StateService来囤积Session了,除非电脑重启可能State瑟维斯崩掉,不然Session是不会丢的(因Session超时被放任是符合规律的)。 

除外,大家还足以将Session通过其余电脑的StateService来保存。具体的修改是如此的。同样还在sessionState标签中,有个stateConnectionString=’tcpip=127.0.0.1:42424’属性,个中有个ip地址,暗中认可为本机(127.0.0.1),你能够将其改成你所知的运转了StateService服务的电脑IP,那样就能够实现位于差别电脑上的Asp.net程序互通Session了。 

借使您有更高的渴求,供给在服务期重启时Session也不丢掉,能够设想将mode设定成SQLServer,同样供给修改sqlConnectionString属性。关于使用SQLServer保存Session的操作,请访问那里。 

在应用StateServer或然SQLServer存款和储蓄Session时,全部需求保留到Session的对象除了主导数据类型(暗中同意的数据类型,如int、string等)外,都不能够不连串化。只需将[Serializable]标签放到要种类化的类前就足以了。 
如: 
[Serializable] 
public class MyClass 

…… 
}

先描述下系统情形:

先描述下系统景况:

操作系统:WindowsServer 二零零三

操作系统:WindowsServer 二零零零

.NET版本:.NET 2.0/ASP.NET 2.0

.NET版本:.NET 2.0/ASP.NET 2.0

数据库:  SQL Server 

数据库:  SQL Server 

从方今描述的题材,开端能够判定:

从方今描述的题材,早先能够判断:

一 、系统不安静,估量是系统大气采用了Session ,Session丢失导致不平稳

① 、系统不平静,猜想是系统大气采纳了Session ,Session丢失导致不安静

二 、10-二十一个用户访问就相当的慢,能够看清使用的是SQL Server Express 版本,SQL
Server Express
最大的并发用户数小于等于11个,只可以协理贰个CPU,最大的内部存储器量是1G等.

二 、10-1几个用户访问就相当慢,能够判定使用的是SQL Server Express 版本,SQL
Server Express
最大的并发用户数小于等于10个,只好协理贰个CPU,最大的内部存款和储蓄器量是1G等.

打听完情状就起来动手啦,首首先登场陆到他的的服务器去看了下,上述判断创制:

摸底完境况就初叶初始啦,首首先登场陆到她的的服务器去看了下,上述判断创设:

一 、SQL Server Express  是二零零七的,SQL Server Express 
二〇〇七的介绍能够看那里
http://msdn.microsoft.com/zh-cn/library/ms345154(v=SQL.90).aspx
,他的服务器有4核,只可以有效应用到2个核,不协助实施诸如并行查询那样的成效,那几个就足以很好的解释他的用户量碰着的情景。消除方案正是帮她装三个SQL
Server 二〇〇九 奥迪Q52 标准版的啊。

① 、SQL Server Express  是二〇〇五的,SQL Server Express 
二〇〇七的牵线能够看那里
http://msdn.microsoft.com/zh-cn/library/ms345154(v=SQL.90).aspx
,他的服务器有4核,只可以有效利用到三个核,不帮忙实施诸如并行查询这样的意义,那么些就能够很好的表达他的用户量境遇的场景。化解方案就是帮她装1个SQL
Server 二〇一〇 卡宴2 专业版的吗。

二 、看到她的Session
形式是InProc,由于Asp.net程序是暗中同意配置,所以Web.Config文件中关于Session的设定如下:
<sessionState mode=’InProc’   cookieless=’true’ timeout=’1200’/>
笔者们会意识sessionState标签中有个属性mode,它能够有3种取值:InProc、StateServer?SQLServer(大小写敏感)
。暗中同意意况下是InProc,也正是将Session保存在进度内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),这几个进程不安静,在好几事件产生时,进度会重起,所以造成了储存在该进度内的Session丢失。
开发那系统的程序员吧timeout时间设置为了1200,那里可观察在不科学的利用Session,程序代码必然在大批量的选拔Session,那个应该是导致系统不安宁的来源。

贰 、看到她的Session
方式是InProc,由于Asp.net程序是暗中同意配置,所以Web.Config文件中关于Session的设定如下:
<sessionState mode=’InProc’   cookieless=’true’ timeout=’1200’/>
自大家会发觉sessionState标签中有个属性mode,它能够有3种取值:InProc、StateServer?SQLServer(大小写敏感)
。暗中同意情形下是InProc,也正是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),那个进度不
稳定,在少数事件发生时,进程会重起,所以导致了蕴藏在该进程内的Session丢失。
开发那系统的程序员吧timeout时间设置为了1200,那里可观察在不科学的使用Session,程序代码必然在多量的应用Session,这一个应该
是导致系统不安宁的根源。

哪些情况下该进程会重起呢?微软的一篇小说《PRB:
会话变量是间歇性地丢失在 ASP.NET
应用程序中》
报告了大家:
壹 、配置文件中processModel标签的memoryLimit属性
贰 、Global.asax可能Web.config文件被改成
③ 、Bin文件夹中的Web程序(DLL)被改动
④ 、杀毒软件扫描了一部分.config文件。

怎么着意况下该进度会重起呢?微软的一篇作品《PRB:
会话变量是间歇性地丢失在 ASP.NET
应用程序中》
告诉了大家:
壹 、配置文件中processModel标签的memoryLimit属性
② 、Global.asax只怕Web.config文件被改成
叁 、Bin文件夹中的Web程序(DLL)被改动
四 、杀毒软件扫描了部分.config文件。

赶尽杀绝方案:
前方说到的sessionState标签中mode属性能够有四个取值,除了InProc之外,还足以为StateServer、SQLServer。那三种存Session的办法都是经过外的,所以当aspnet_wp.exe重起的时候,不会影响到Session。
近来请将mode设定为StateServer。StateServer是本机的3个劳务,能够在系统服务里观看服务名为ASP.NET
State
瑟维斯的劳动,私下认可情状是不运转的。当我们设定mode为StateServer之后,请手工业将该服务运营。
那样,大家就能利用本机的StateService来囤积Session了,除非电脑重启恐怕State瑟维斯崩掉,不然Session是不会丢的(因Session超时被裁撤是例行的)。
除此而外,我们还足以将Session通过别的计算机的State瑟维斯来保存。具体的改动是这么的。同样还在sessionState标签中,有个stateConnectionString=’tcpip=127.0.0.1:42424’属性,当中有个ip地址,暗中认可为本机(127.0.0.1),你能够将其改成你所知的运维了StateService服务的电脑IP,那样就足以兑现位于差异电脑上的Asp.net程序互通Session了。
假若你有更高的渴求,须求在劳动期重启时Session也不丢掉,能够考虑将mode设定成SQLServer,同样需求修改sqlConnectionString属性。

化解方案:
眼下说到的sessionState标签中mode属性能够有四个取值,除了InProc之外,还是能够为StateServer、SQLServer。那两种存Session的格局都以经过外的,所以当aspnet_wp.exe重起的时候,不会潜移默化到Session。
现行反革命请将mode设定为StateServer。StateServer是本机的二个劳务,能够在系统服务里看看服务名为ASP.NET
State
Service的劳动,私下认可景况是不运行的。当我们设定mode为StateServer之后,请手工业将该服务运行。
诸如此类,大家就能运用本机的StateService来存款和储蓄Session了,除非电脑重启也许StateService崩掉,不然Session是不会丢的(因Session超时被放任是健康的)。
除 此之外,我们还是能够将Session通过别的总结机的StateService来保存。具体的改动是这么的。同样还在sessionState标签中,有个
stateConnectionString=’tcpip=127.0.0.1:42424’属性,其中有个ip地址,暗许为本机
(127.0.0.1),你能够将其改成你所知的运维了StateService服务的微处理器IP,那样就能够完成位于不相同电脑上的Asp.net程序互通
Session了。
如若你有更高的供给,供给在劳动期重启时Session也不丢掉,可以考虑将mode设定成SQLServer,同样须求修改sqlConnectionString属性。

三 、数据库的具有表除了主键外没有此外索引,那对于数据量十分小的时候呈现不出去,就算那个难题不是此次的题材的主要,不过是他日以此连串的隐患。那个属于数据库优化部分,此次能够不做,必要获得代码后分析都用到那么些查询条件,好建立目录。

③ 、数据库的具有表除了主键外没有其余索引,那对于数据量一点都不大的时候呈现不出去,即便那么些题材不是这一次的题材的首要性,可是是他日以此体系的隐患。这些属于数据库优化部分,本次能够不做,要求获得代码后分析都用到那么些查询条件,好建立目录。

服务器上的调整完了,能够解决他的大标题了,然后让她向开发商要到了最新的代码,时期的居多工作让自己极其感慨中国的软件业为何做倒霉。纵然那只是1个小示例,基本上能够代表中华的一线软件开发商的情况。

服务器上的调动完了,能够化解他的大题材了,然后让她向开发商要到了新星的代码,时期的无数政工让自家最为感慨中中原人民共和国的软件业为啥做不佳。尽管那只是3个小示例,基本上能够象征中华夏族民共和国的细小软件开发商的事态。

一 、代码没有源代码控制:要到的代码和平运动转环境不等同,那些是对他的当下以此类别最没把握的地点,这一个类型选取的是ASP.NET
Web Site
格局开发的,把他生产环境的运行的代码拷到本地来,这么些能够消除眼下运作的本子和代码部分一致性了,还有那个项目参照的微软的那2个宠物商店方式搞的,PetShop是3个范例,微软用它来显示.Net公司系统开发的力量。产业界有许多.Net与J2EE之争,许多数量是从微软的PetShop和Sun的PetStore而来。那种冲突不可制止带有深刻的生意色彩,对于大家开发人士而言,没有需要过多关切。PetShop是1个小型的类型,系统架构与代码都比较不难,那也是其一类型看起来还足以的四个缘由,然则Web
Site
部分的代码看起来真是操心,一眼扫过去,就足以看看多量的不安全、稳定的代码,随时也许报错。或然那是三个体系不安静的来由。

一 、代码没有源代码控制:要到的代码和平运动作环境不平等,那些是对他的日前以此种类最没把握的地方,这几个项目应用的是ASP.NET
Web Site
情势开发的,把他生产条件的运作的代码拷到本地来,那一个可以缓解当下运作的本子和代码部分一致性了,还有那几个类型参照的微软的十分宠物商店情势搞
的,PetShop是三个范例,微软用它来彰显.Net集团系统开发的能力。产业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和
Sun的PetStore而来。那种争辩不可制止带有深切的商业色彩,对于我们开发人士而言,没有供给过多关切。PetShop是三个袖珍的类型,系统架构与代码都相比不难,那也是其一类型看起来仍是能够的1个缘由,但是Web Site
部分的代码看起来真是操心,一眼扫过去,就足以见见大批量的不安全、稳定的代码,随时只怕报错。大概那是一个种类不安静的原因。

二 、系统的开发人员能力弱:那些类型的流水生产线,包涵页面如何做都是自笔者的那位同学定的,不得钦佩那位兄弟,他是学物理的,大学毕业后工作了2年开头出来独立创业,搞电子产品零部件的支付,期间的经验也很寒心,未来早就有底子,近期事情也情有可原。他不会开发顺序,会搞硬件设计。他把软件的费用工作委托1个小企支出成功,也直接是这家店铺做保卫安全。近日他受持续,找到作者,想未来不再这家公司帮她维护了,让自家帮他搞搞。据她讲述,他提的修改难题给开发职员,改后就应运而生别的的难题。很多题材心急火燎解决,看着这几个开发职员很脑仁疼。没有版本控制,开发职员水平差恐怕是造成她的埋怨的缘故。

贰 、系统的开发职员能力弱:这么些类其余流程,包涵页面如何做都以自身的那位同学定的,不得钦佩那位兄弟,他是学物理的,高校完成学业后工作了2年伊始出来
独立创业,搞电子产品零部件的付出,时期的阅历也很寒心,未来一度有底蕴,近来事情也不错。他不会开发顺序,会搞硬件设计。他把软件的支付工作委托一个小企支出成功,也平素是这家集团做维护。近日她受持续,找到笔者,想以后不再这家铺子帮她维护了,让自家帮他搞搞。据他描述,他提的修改难点给开发人士,改后
就涌出此外的标题。很多标题无可奈何化解,望着这几个开发职员很发烧。没有版本控制,开发人士水平差可能是引致他的埋怨的原因。

项目优化经验——垃圾回收导致的属性难题

作者: 自由、创新、研究、探索……
出处:http://shanyou.cnblogs.com/
版权:本文版权归小编和网易共有
转发:欢迎转发,为了保留小编的编写热情,请按须要【转发】,多谢

相关文章