会话状态在asp.net Web场中丢失

时间:2012-09-02 13:51:07

标签: asp.net-mvc windows-server-2008 round-robin session-state-server

我已经忙了几个月了。

我目前有1个网站的2台服务器。使用循环dns我发现一开始一切正常(检查它改变的网站的IP,但我可以继续我的会话),但过了一段时间我失去了我的会话,似乎无法读取formauthentication cookie,是被丢弃。 (假设)但这并不是一直发生的。只是有时候。

我正在使用iis7共享配置,我设置了机器密钥,我正在使用指向其中一个服务器的stateserver,我在两台服务器上验证了状态服务器的工作原理。

我读了一些关于IIS应用程序路径的内容,但我真的不知道它是什么意思,它是webapp的路径,还是安装IIS的路径?在这两种情况下它们都是一样的。

任何人都有一些想法?

2 个答案:

答案 0 :(得分:2)

对于遇到同样问题的人,我会自己回答这个问题。一切都设置正确但机器密钥应位于system.web下的web.config中。通过iis 7生成密钥由于某种原因无效,我使用在线工具生成它:http://aspnetresources.com/tools/machineKey

因此,要在iis7上进行负载平衡并设置多个服务器,您应该:

  • 使用stateserver out-proc(stateserver或sql server)并拥有所有 服务器指向该状态服务器(例如:stateConnectionString =“tcpip = server1:42424”)
  • 使用iis共享配置,以便所有服务器都指向applicationhost.config所在的共享。
  • 生成机器密钥(不是通过iis,只需使用在线工具!)
  • 设置NLB(或循环DNS)并通过刷新你的DNS来测试它 您登录时的客户端,看看您的会话是否不会丢失。

希望这有助于某人。

答案 1 :(得分:0)

机器密钥特定于.NET版本。要检查当前版本:在IIS控制台的服务器级别,单击“操作”窗格中的“更改.NET Framework版本”。