飘飘悠悠 发表于 2015-1-16 22:23:50

ASP.NET网页设计ASP.NET中的session存储形式使用

中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。在asp.net中的Session存储体例不象asp那样单一,一共供应了三种存储体例,因为比来一个2000多人利用的web软件呈现了妨碍,用户天天早上在某一时候呈现难以上岸征象,接着Session丢值呈现,只要重启IIS,或呆板.这时候程序恢复一般了.成天都不会呈现一样的成绩,可是第二天仍旧!这类征象延续了好几天,我反省了一下日记文件,岑岭每秒会见人数也许20人摆布,同时也许100多人在线,今后会见人数还会增添,为懂得决这个怪成绩,先从软件动手,故而三种体例都使用了一番。
翻开web.config文件
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="datasource=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
个中默许的mode是InProc范例,这类形式和之前ASP形式一样,就是服务器将Session信息存储在IIS历程傍边,当IIS封闭、重起后这些历程信息城市丧失,但这类形式的功能最高(详细没测,看书上说),这类形式是asp.net的默许体例。
因为这类形式呈现了妨碍,事先我的思索就是因为会见量过年夜的缘故原由,招致Inetinfo.exe历程溃散。用户难以上岸乃至Session丢值呈现妨碍,我接纳了别的一种Session的存储体例把Session信息存储在历程外。
起首,翻开办理工具找到服务,找到名为:asp.netStateService的服务,启动它.而且改成主动启动。这时候你能够在义务办理器中看到一个名为aspnet_state.exe的历程。这就是我们保留session信息的历程。
然后,回到web.config文件中把Mode的值改成StateServer,保留文件。OK.
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="datasource=192.10.78.76;Userid=sa;password=sa"
cookieless="false"
timeout="20"
/>
这类形式当我们重起IIS,保留的session值不会丧失。别的这类体例还能够把信息保留在其他呆板的历程中,不外还要变动stateConnectionString="tcpip=127.0.0.1:42424",IP地点改成其他呆板便可。
别的还接纳了其他的措施.好比把数据库和Web服务器分隔,数据库服务器不供应WEB服务,Web服务器不供应数据库服务,
然后把毗连池扩展,因为asp.net中ADO.NET数据会见默许毗连池数目为100,厥后我扩展到6000特地把写法加下去
“Server=(local);
Database=rgs;
password=sa;
userID=sa;
MaxPoolSize=6000;
MinPoolSize=5;
Pooling=True”

最初把Machine.config中的ProcessModel中的memoryLimit改成95,默许为60,暗示内存占用凌驾60%后iis历程会主动重起。接着还做写别的一些优化IIS的办法,把注册表的IIS缓存加年夜等等。
当我做完这些优化步骤后,全部软件运转对照优秀,第二天没有发明梗塞的征象,可是第三天情形又呈现了,其实没举措,我接纳了最初一种ASP.NET中的session存储办法就是将Session存储在SQLServer中,我想如许不乱性应当强些。
要利用SQLServer中,起首在会话形态的SQLServer的盘算机上,运转InstallSqlState.sql或InstallPersistSqlState.sql(默许地位:systemrootMicrosoft.NETFrameworkversionNumber上面)两个剧本都创立一个名为ASPState的数据库,两个剧本的不同在于安排ASPStateTempApplication和ASPStageTempSessions表的地位。InstallSqlState.sql剧本将这些表增加到TempDB数据库,该数据库在盘算机重起时将丧失数据,而InstallPersistSqlState.sql剧本将这些表增加到ASPState数据库,该数据库重启时保存会话数据。
然后在使用程序的web.config文件中,把<sessionState>元素的mode属性设置为SQLServer,最初将sqlConnectionString属性设置为IntegratedSecurity=SSPI;datasource=serverName;
<sessionStatemode="SQLServer"sqlConnectionString="IntegratedSecurity=SSPI;
datasource=dataserver;"
cookieless="false"
timeout="20"/>
</sessionState>

假如部署在其他呆板上能够变动为,加上用户名和暗码

<sessionState
mode="SQLServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="datasource=192.10.78.76;Userid=sa;password=sa"
cookieless="false"
timeout="20"
/>
如许部署完成了,假如不想利用这类能够删撤除,只需在响应的目次(systemrootMicrosoft.NETFrameworkversionNumber)找到UninstallPersistSqlState.sql大概UninstallSqlState.sql文件运转便可。如许就先容了ASP.NET中的session存储形式。
最初要注重的是,不管利用StateServer大概SQLServer形式时,当利用session转换工具时,注重工具要先序列化,就是在类前加上Serializable,不然会呈现毛病!
来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着!

山那边是海 发表于 2015-1-19 10:34:53

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。

莫相离 发表于 2015-1-25 18:22:04

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

飘灵儿 发表于 2015-2-3 12:57:39

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。

爱飞 发表于 2015-2-9 02:28:58

ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。

兰色精灵 发表于 2015-2-26 18:52:06

有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。

简单生活 发表于 2015-3-8 16:44:40

业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

第二个灵魂 发表于 2015-3-16 07:31:03

微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。

只想知道 发表于 2015-3-22 21:10:37

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
页: [1]
查看完整版本: ASP.NET网页设计ASP.NET中的session存储形式使用