C# InProc与StateServer
我们最近从使用C# InProc与StateServer,c#,asp.net,session,session-state,C#,Asp.net,Session,Session State,我们最近从使用InProc更改为使用StateServer存储会话信息 我想知道,现在是否可以在不丢失会话信息的情况下更新网站上的配置文件。当我们使用InProc和更新的资源文件(如语言文件)、web配置文件、global.asax或App\u code中的文件时,我们发现会话似乎会重置,并收到如下错误: “对象引用未设置为对象的实例” 转到StateServer是否会改变这种情况?在不丢失会话数据的情况下更新这些类型的文件是否安全?我已经在我们的测试系统上运行了几个测试,看起来它工作正常,但我
InProc
更改为使用StateServer
存储会话信息
我想知道,现在是否可以在不丢失会话信息的情况下更新网站上的配置文件。当我们使用InProc和更新的资源文件(如语言文件)、web配置文件、global.asax或App\u code
中的文件时,我们发现会话似乎会重置,并收到如下错误:
“对象引用未设置为对象的实例”
转到
StateServer
是否会改变这种情况?在不丢失会话数据的情况下更新这些类型的文件是否安全?我已经在我们的测试系统上运行了几个测试,看起来它工作正常,但我不是100%有信心…是的。一旦会话数据退出进程,就可以安全地重新启动工作进程。您可以通过登录到您的站点,执行一些涉及会话更新的操作,并从任务管理器中终止相应的w3wp.exe进程(假设是IIS 7+)(或者只触摸web.config)来测试它。您的查询的简单答案是是
还有更多的话要说……-使用状态服务器,会话被序列化并存储在单独进程(aspnet_State.exe)的内存中。
-状态服务器可以在另一台计算机上运行。
-会话是持久的,您不必担心在应用程序重新启动期间会话数据丢失
-在一个测试环境中存储基本类型(如字符串、整数等)的数据时,它比InProc慢15%。
-如果存储大量对象,序列化/反序列化的成本可能会影响性能。
-在InProc模式下解决会话状态丢失问题。允许Web场在中心服务器上存储ASP.NET会话。状态服务器上的单点故障 有关更多信息,请参阅:
-AFAIK,会话对象应该能够通过使用状态服务器的apppool回收。您可以添加堆栈跟踪吗?说发生了什么会更容易。谢谢你的确认。我是个新手,所以只想得到更有经验的人的确认:)