我正在努力解决以下问题。设置:
网络服务器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为null:
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被发送给所有网络服务器。
什么可能导致我的会话在服务器之间为空?
答案 0 :(得分:0)
解决方案可在此处找到:https://stackoverflow.com/a/456238/167196。
要在Web场中的不同Web服务器之间维护会话状态,Microsoft Internet信息服务(IIS)元数据库中的Web站点(例如,\ LM \ W3SVC \ 2)的应用程序路径必须对所有人都相同Web场中的Web服务器。案例也需要相同,因为应用程序路径区分大小写。