Asp.net mvc 4 为什么我的会话id在服务器场上多次更改?
我在一个web服务器场服务器上有一个web应用程序(mvc4和.net4.5),有一件事让我很困惑,我的会话id发生了变化,这是因为我的会话状态变白了,并且我丢失了存储在会话状态下的所有用户数据。但它在本地机器上运行良好 我在web配置中使用此配置:Asp.net mvc 4 为什么我的会话id在服务器场上多次更改?,asp.net-mvc-4,Asp.net Mvc 4,我在一个web服务器场服务器上有一个web应用程序(mvc4和.net4.5),有一件事让我很困惑,我的会话id发生了变化,这是因为我的会话状态变白了,并且我丢失了存储在会话状态下的所有用户数据。但它在本地机器上运行良好 我在web配置中使用此配置: <sessionState mode="StateServer" customProvider="DefaultSessionProvider" cookieName="abcd" timeout="120" > <pro
<sessionState mode="StateServer" customProvider="DefaultSessionProvider"
cookieName="abcd" timeout="120" >
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
</providers>
</sessionState>
并按以下语法阅读:
var myval=HttpContext.Current.Session[System.Web.HttpContext.Current.Session.SessionID]
就像服务器不使用我的配置,而是自己工作一样。
我想知道是否可能在我的服务器场服务器上设置了某些配置,但它不使用我的配置,并且自己工作?要从注释扩展,您似乎必须按照以下Microsoft支持文章正确配置web应用程序
< P>服务器端状态管理,如果客户端在会话中间切换服务器,则新服务器不一定能够访问客户端的状态信息(因为它存储在不同的服务器上)。您可以使用具有服务器端状态管理的多台服务器,但您需要智能负载平衡(以始终转发来自服务器的请求) 同一服务器的客户端)或集中式状态管理(其中状态存储在 所有web服务器都可以访问的中央数据库)
- 确保所有web服务器中都有相同的MachineKey,否则它们无法共享会话数据
- 存储在会话中的对象需要可序列化
HttpContext.Current.Session[System.Web.HttpContext.Current.Session.SessionID] = "abc"
var myval=HttpContext.Current.Session[System.Web.HttpContext.Current.Session.SessionID]