我在网络服务器场服务器上有一个Web应用程序(mvc4和.net4.5),有一件事令我困惑,我的会话ID改变了whiteout原因并强烈地丢失了我在会话状态下存储它们的所有用户数据。但它在本地机器上运行良好。
我在我的网络配置中使用此配置:
<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>
我的机器钥匙是:
<machineKey compatibilityMode="Framework45"
validationKey="702C65CF39B1ED514AC4B92326C3A84B3D88990DDF784AA0895659B528ED95F8CA0A9CD1AF5ED92A2599362684CB8D204AC30D07E6BF0CF65194A5129"
decryptionKey="1C49E6BA2F9423387FBC91389A0C5C8D06B61875BCE4916A40474ED"
validation="SHA1" decryption="AES" />
我的会话超时是120分钟,我无法找到为什么这会发生在我的web应用程序中。我使用我的日志类来查看我的Web应用程序上发生了什么,我确定 会话ID改变。
例如,当用户去另一个区域或当用户想通过网上银行付款付款时,我将其重定向到银行页面,当用户从同一窗口中的银行重定向到我的网站时(我没有打开另一个标签或窗口到这样做)会话ID改变了。
我在会话中存储用户ID等小数据。
我使用这种语法来存储会话:
HttpContext.Current.Session[System.Web.HttpContext.Current.Session.SessionID] = "abc"
并通过以下语法阅读:
var myval=HttpContext.Current.Session[System.Web.HttpContext.Current.Session.SessionID]
它就像服务器不使用我的配置并自己工作。 我想知道是否有可能在我的服务器场服务器上设置了一些配置,如果它不使用我的配置并且自己有用吗?
答案 0 :(得分:1)
要从评论扩展,您似乎必须按照以下Microsoft支持文章正确配置您的网络应用
答案 1 :(得分:-1)
使用服务器端状态管理,如果客户端在会话中间切换服务器,则新服务器不一定能够访问客户端的状态信息(因为它存储在不同的服务器上)。您可以使用具有服务器端状态管理的多个服务器,但您需要智能负载平衡(以始终转发来自的请求) 客户端到同一服务器)或集中式状态管理(状态存储在一个 所有Web服务器都可以访问的中央数据库)。