Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# InProc与StateServer_C#_Asp.net_Session_Session State - Fatal编程技术网

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回收。您可以添加堆栈跟踪吗?说发生了什么会更容易。谢谢你的确认。我是个新手,所以只想得到更有经验的人的确认:)