国语自产精品视频在线看:您身边最放心的安全下载站! 最新软件|热门排行|软件分类|软件专题|厂商大全

国语自产精品视频在线看

技术教程
您的位置:首页网络编程.Net编程 → .Net基础:ASP.NET中的session存储模式运用

.Net基础:ASP.NET中的session存储模式运用

我要评论 2009/08/19 10:36:14 来源:国语自产精品视频在线看 编辑:绿色资源站 [ ] 评论:0 点击:396次

在【zài】asp.net中的🧕Session存储方【cún chǔ fāng】式不象🆓asp那样单🏆一,一共提🧦供了三种存储方【cún chǔ fāng】式,由于最近一个2000多人使【duō rén shǐ】🌻用的web软件出🛐现了故【xiàn le gù】🔋障♍,用户每天🌍早上在【zài】某一时刻出🛄现难以🌠登陆现象,接着Session丢值出【diū zhí chū】现,只有重启【qǐ】🐻IIS,或机器.这时程【zhè shí chéng】序恢复正常了🌠.整天【zhěng tiān】🌍都不会【dōu bú huì】出现同样的问【yàng de wèn】题 ,但是第🎓二天依【èr tiān yī】🍨旧【jiù】!这种现【zhè zhǒng xiàn】⬛象持续了好几【le hǎo jǐ】👡天🌍,我检查了一下日志文件🚐,高峰每秒访问人数大【rén shù dà】概20人左右【rén zuǒ yòu】,同时大概100多人在【zài】线,以后访问人数还会增🚞加【jiā】,为了解【wéi le jiě】决这个【jué zhè gè】👘怪问题,先从软【xiān cóng ruǎn】件着手【jiàn zhe shǒu】🤢,故而三种方式【zhǒng fāng shì】都应用了一番。

打开【dǎ kāi】⏺web.config文件
< sessionState

mode="InProc"

stateConnectionString="tcpip=127.0.0.1:42424"

sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"

cookieless="false"

timeout="20"

/>

其中默认的mode是InProc类型,这种模式和以前🎪ASP模式一【mó shì yī】样🤾,就是服【jiù shì fú】务器将🐠Session信息存🈹储在【chǔ zài】IIS进程当【jìn chéng dāng】👣中,当IIS关闭【guān bì】💕、重起后【chóng qǐ hòu】这些进【zhè xiē jìn】程信息【chéng xìn xī】🥜都会丢失🔘,但这种模式的【mó shì de】性能最高(具体没📨测,看书上🐾说),这种模式是asp.net的默认【de mò rèn】方式【fāng shì】😣。

由于这种模式🥏出现了故障【gù zhàng】,当时我🥤的考虑就是由于访问📐量过大的原因【de yuán yīn】,导致Inetinfo.exe进程崩🚑溃【kuì】。用户难【yòng hù nán】以登陆以致【yǐ zhì】Session丢值出【diū zhí chū】现故障【gù zhàng】🤠,我采用【wǒ cǎi yòng】了另外一种😁Session的存储📯方式把Session信息存🦄储在进程外【chéng wài】。

首先🐿,打开管理工具找到服👲务【wù】🚍,找到名为【wéi】:asp.net State Service的服务【wù】🚍,启动【qǐ dòng】它.并且改👘成自动🚿启动【qǐ dòng】。这时你【zhè shí nǐ】可以在🏕任务【wù】🚍管理器【guǎn lǐ qì】中看到一个名为【wéi】aspnet_state.exe的进程【de jìn chéng】📿。这就是【zhè jiù shì】我们保【wǒ men bǎo】👕存session信息的进程【de jìn chéng】📿。

然后【rán hòu】,回到web.config文件中【wén jiàn zhōng】把👉Mode的值改🧗为♋StateServer,保存文件【jiàn】。OK.

< sessionState

mode="StateServer"

stateConnectionString="tcpip=127.0.0.1:42424"

sqlConnectionString="data source=192.10.78.76;User id=sa;password=sa"

cookieless="false"

timeout="20"

/>

这种模式当我们重起IIS,保存的【bǎo cún de】🔜session值不会【zhí bú huì】丢失。另外这种方式🚓还可【kě】以把信息【bǎ xìn xī】保存在😈其他机【qí tā jī】🎂器的进程中🕸,不过还要更改 stateConnectionString="tcpip=127.0.0.1:42424",IP地址改【dì zhǐ gǎi】为其他👬机器即可【kě】。

另外还😤采取了🎎其他的【qí tā de】措施.比如把数据库【shù jù kù】和🧐Web服务器【fú wù qì】👥分开【fèn kāi】,数据库【shù jù kù】服务器【fú wù qì】👥不提供【bú tí gòng】➖WEB服务📦,Web服务器【fú wù qì】👥不提供【bú tí gòng】➖数据库【shù jù kù】服务📦,

然后把【rán hòu bǎ】连接池【lián jiē chí】扩大,由于🤐asp.net中🏕ADO.NET数据访【shù jù fǎng】🧣问默认【wèn mò rèn】🔭连接池【lián jiē chí】数量为100, 后来我扩大到6000顺便把写法加【xiě fǎ jiā】上来📬

“Server=(local);

Database=rgs;

password=sa;

user ID=sa;

Max Pool Size =6000;

Min Pool Size =5;

Pooling=True”

最后🚞把【bǎ】Machine.config中的【zhōng de】ProcessModel中的【zhōng de】memoryLimit改为95,默认为👝60,表示内🚲存占用超过【chāo guò】60%后🚞iis进程会自动重起【qǐ】💈。接着还🐗做写其它一些优化【yōu huà】👏IIS的方法【de fāng fǎ】🗒,把【bǎ】注册表的【biǎo de】IIS缓存加大等等 。

当我做🎍完这些优化步【yōu huà bù】骤后,整个软🏄件运行【jiàn yùn háng】比较良【bǐ jiào liáng】好【hǎo】,第二天没有发现堵塞的现象,但是第【dàn shì dì】三天情况又出【kuàng yòu chū】🈚现了【xiàn le】💡,实在没【shí zài méi】办法🕶,我采取🌉了最后一种【yī zhǒng】🏘ASP.NET中🕛的session存储方【cún chǔ fāng】😻法就是将Session存储在🈲SQLServer中🕛,我想这样稳定性应该强些。

要使用SQLServer中,首先在会话状态的SQLServer的计算【de jì suàn】🗓机上📒,运行【yùn háng】InstallSqlState.sql或【huò】InstallPersistSqlState.sql(默认位置【zhì】🚹:systemroot\Microsoft.NET\Framework\versionNumber下面【xià miàn】)两个脚💒本都创建一个🗿名为ASPState的数据库【shù jù kù】🤝,两个脚💒本的差【běn de chà】别在于放置【fàng zhì】🚹ASPStateTempApplication和🔅ASPStageTempSessions表的位🕜置【zhì】🚹。InstallSqlState.sql脚本将这些表📢添加到【tiān jiā dào】⚫TempDB数据库【shù jù kù】🤝,该数据【gāi shù jù】库【kù】🤝在计算【zài jì suàn】机重起时将🏧丢失数【diū shī shù】据,而💉InstallPersistSqlState.sql脚本将这些表📢添加到【tiān jiā dào】⚫ASPState数据库【shù jù kù】🤝,该数据【gāi shù jù】库【kù】🤝重启时【chóng qǐ shí】保留🏎会话数【huì huà shù】据。

然后在🌐应用程序的web.config文件中,把【bǎ】< sessionState>元素的【yuán sù de】🐩mode属性设置为【zhì wéi】🎩SQLServer,最后将【zuì hòu jiāng】sqlConnectionString属性设置为【zhì wéi】🎩Integrated Security=SSPI;data source=serverName;

< sessionState mode="SQLServer" sqlConnectionString=" Integrated Security=SSPI;

data source=dataserver;"

cookieless="false"

timeout="20"/>

< /sessionState>


如果部署在其🙅他机器上可以【shàng kě yǐ】📚更改为🥊,加上用【jiā shàng yòng】户名和密码【mì mǎ】


< sessionState

mode="SQLServer"

stateConnectionString="tcpip=127.0.0.1:42424"

sqlConnectionString="data source=192.10.78.76;User id=sa;password=sa"

cookieless="false"

timeout="20"

/>

这样部📩署完成了📨,如果不【rú guǒ bú】想使用【xiǎng shǐ yòng】这种可以删除【yǐ shān chú】掉,只要在相应的🧓目录⛅(systemroot\Microsoft.NET\Framework\versionNumber)找到【zhǎo dào】UninstallPersistSqlState.sql或者【huò zhě】UninstallSqlState.sql文件运行即可【háng jí kě】。这样就介绍了📨ASP.NET中的🔬session存储模式🎤。

最后要【zuì hòu yào】注意的是【shì】🖱,无论使用【yòng】🛶StateServer或者SQLServer模式时🚅,当使用【yòng】🛶session转换对【zhuǎn huàn duì】象时🌶,注意对❔象要先序列化🤦,就是【shì】🖱在类前加上Serializable,否则会【fǒu zé huì】出现错【chū xiàn cuò】误!

关键词:ASP.NET,session

阅读本文后您有什么感想? 已有 人给出评价!

  • 1 欢迎喜欢
  • 1 白痴
  • 1 拜托
  • 1 哇
  • 1 加油
  • 1 鄙视