InProc vs StateServer

本文关键字:StateServer vs InProc | 更新日期: 2023-09-27 17:50:37

我们最近从使用InProc改为使用StateServer来存储会话信息。

我想知道,如果现在有可能更新网站上的配置文件而不丢失会话信息。当我们使用InProc和更新资源文件(如语言文件),web配置文件,全局。在App_Code中,我们发现会话似乎重置并接收到像

这样的错误。

'对象引用未设置为对象的实例'

转到StateServer时是否会发生变化?在不丢失会话数据的情况下更新这些类型的文件是否安全?我已经在我们的测试系统上运行了几个测试,看起来它工作正常,但我不是100%有信心…

InProc vs StateServer

对您的查询的简单回答是YES


-使用状态服务器,会话被序列化并存储在一个单独的进程(aspnet_state.exe)的内存中。-状态服务器可以在另一台机器上运行。
-会话是持久的,你不需要担心你的会话数据在应用程序重启期间丢失
-当存储基本类型的数据(如字符串,整数等)时,在一个测试环境中,它比InProc慢15%。
-如果存储大量对象,序列化/反序列化的成本会影响性能。
—解决InProc模式下会话状态丢失问题。允许网站农场存储ASP。. NET会话在中央服务器上。状态服务器上的单点故障。

更多参考:
-会话inproc模式到服务器状态的步骤

是的。一旦会话数据处于进程外,就可以安全地重新启动工作进程了。您可以通过登录到您的网站,做一些涉及会话更新和从任务管理器(或只是触摸web.config)杀死相应的w3wp.exe进程(假设它是IIS 7+)的操作来测试它。