Asp.net mvc 4 为什么我的会话id在服务器场上多次更改?

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

我在一个web服务器场服务器上有一个web应用程序(mvc4和.net4.5),有一件事让我很困惑,我的会话id发生了变化,这是因为我的会话状态变白了,并且我丢失了存储在会话状态下的所有用户数据。但它在本地机器上运行良好

我在web配置中使用此配置:

<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,否则它们无法共享会话数据
  • 存储在会话中的对象需要可序列化

你看过这篇文章了吗?我在我的网站上设置了所有必要的配置来隔离它,我的对象具有可序列化的属性,包括这一点:@dove我认为你是对的,web farm可以这样做,这是一个有用的链接感谢你的帮助不要公开显示你的验证密钥和解密密钥,它们应该是私有的。
HttpContext.Current.Session[System.Web.HttpContext.Current.Session.SessionID] = "abc"
var myval=HttpContext.Current.Session[System.Web.HttpContext.Current.Session.SessionID]