我正在努力解决以下问题。设置:
- .NET 4 上的 ASP.NET 网络表单应用程序。
- 状态服务的会话状态。
- 三台网络服务器。这三个都托管 Web 应用程序。一个还充当 ARR 控制器。
网络服务器 1:Windows 2012。IIS 8。ASP.NET 状态服务。ARR 控制器。
网络服务器 2:Windows 2012。IIS 8。
网络服务器 3:Windows Server 2008R2。IIS 7.5。已安装 ASP.NET 4.5.2。
在服务器之间导航/切换时,Httpcontext.Session 为空:
HttpContext context = HttpContext.Current;
if (context.Session == null)
{
CurrentLogger.Logger.Info("Context.Session is null");
}
如果我很幸运,并且请求重定向到同一台服务器,它会保留会话。
sessionState 服务器配置如下:
<sessionState mode="StateServer" stateConnectionString="tcpip=192.168.2.53:42424" cookieless="false" timeout="30" />
我还设置了机器密钥:
<machineKey validationKey="[xxxxx]" decryptionKey="[xxxx]" validation="SHA1" />
我要求我的所有 cookie 仅通过 SSL 发送。使用 IIS 日志记录我发现这不是问题。身份验证和会话 cookie 被发送到所有网络服务器。
什么可能导致我的会话在服务器之间为空?