我在 Web 场服务器上有一个 Web 应用程序(mvc4 和 .net4.5),有一件事让我感到困惑,我的会话 ID 改变了白白原因并且强烈地丢失了我将它们存储在会话状态中的所有用户数据。但它在本地机器上运行良好。
我在我的网络配置中使用这个配置:
<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]
它就像该服务器不使用我的配置并自行工作。我想知道是否有可能在我的场服务器上设置了某些配置,并且它不使用我的配置并且可以为自己工作?