分享

ASP.NET状态服务及session丢失问题解决方案总结

 东鹏图书馆 2015-03-28
备注
1)使用 StateServer 模式
确保运行 ASP.NET 状态服务的服务器是要存储会话状态信息的远程服务器。该服务与 ASP.NET 一起安装,其默认位置为

<驱动器>:\systemroot\Microsoft.NET\Framework\version\aspnet_state.exe
在应用程序的 Web.config 文件中,

设置 mode=StateServer 并设置 stateConnectionString 属性。

例如,stateConnectionString="tcpip=sarath:42424"
2)使用 SQLServer 模式
在运行 SQL Server 的计算机(它将存储会话状态)上运行 InstallSqlState.sql

(默认的安装位置为 <驱动器>:\systemroot\Microsoft.NET\Framework\version)。

这将创建一个名为 ASPState 的数据库,该数据库具有新的存储过程并且在 TempDB 数据库中具有 ASPStateTempApplications 表和 ASPStateTempSessions 表。
在应用程序的 Web.config 文件中,设置 mode=SQLServer 并设置 sqlConnectionString 属性。例如,sqlConnectionString="data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"
3)示例
以下示例指定若干会话状态配置设置。

<configuration>
<system.web>
<sessionState mode="InProc"
cookieless="true"
timeout="20"/>
</sessionState>
</system.web>
</configuration>
要求
包含于:<system.web>
Web
平台:IIS 5.0IIS 5.1IIS 6.0
配置文件:Machine.configWeb.config
配置节处理程序:System.Web.SessionState.SessionStateSectionHandler
请参见


ASP.NET
配置 | ASP.NET 设置架构 | SessionStateModule

作者:  来源:  (责任编辑:webjx)--- -------------收集之二---------------------------------

[出现原因:]Windows2003的服务器中的IIS6加入了应用程序池来回收一些无用的进程的功能,当由于网站程序的错误访问量太多的导致的应用程序池会自动回收该进程,防止网站进入死机状态,而这时候的应用程序池的回收就会导致session变量被清除,就出现了session变量不见的现象。
为了解决这种在Windows2003下才出现的问题,我们在服务端起动ASP.NET State Service服务,并且在系统的machine.config做了一些改动。现在默认的情况下会话状态modeStateServer。如果您的网站根目录下也配有一个web.config配置文件,请把mode="InProc"改成mode="StateServer",如下代码,就可以防止session变量的丢失:
<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
cookieless="false"
timeout="30"
/>
+
注:只适用于支持asp.net的用户。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多