应用程序请求路由(ARR)后面的HttpContext.Session为空

时间:2016-02-16 09:16:21

标签: iis session-state arr session-state-server

我正在努力解决以下问题。设置:

  • .NET 4上的ASP.NET webforms应用程序。
  • 国家服务会议状态。
  • 三个网络服务器。这三个人都主持了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为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被发送给所有网络服务器。

什么可能导致我的会话在服务器之间为空?

1 个答案:

答案 0 :(得分:0)

解决方案可在此处找到:https://stackoverflow.com/a/456238/167196

  

要在Web场中的不同Web服务器之间维护会话状态,Microsoft Internet信息服务(IIS)元数据库中的Web站点(例如,\ LM \ W3SVC \ 2)的应用程序路径必须对所有人都相同Web场中的Web服务器。案例也需要相同,因为应用程序路径区分大小写。