【发布时间】:2012-08-25 17:17:49
【问题描述】:
我在 godaddy 服务中有一个 MCV3 应用程序,会话非常不稳定。
当我登录时它工作正常,但在应用程序中导航时它会注销我,并在应用程序中点击刷新或导航更多一点,就像那样让我登录(不询问凭据或任何东西)。在我的远程测试服务器和本地测试服务器上工作正常。
【问题讨论】:
标签: asp.net-mvc session login logout
我在 godaddy 服务中有一个 MCV3 应用程序,会话非常不稳定。
当我登录时它工作正常,但在应用程序中导航时它会注销我,并在应用程序中点击刷新或导航更多一点,就像那样让我登录(不询问凭据或任何东西)。在我的远程测试服务器和本地测试服务器上工作正常。
【问题讨论】:
标签: asp.net-mvc session login logout
这可能不是会话问题,而是身份验证 cookie/票证问题。 GoDaddy(很可能)使他们的服务器负载平衡。这意味着您的应用程序实际上一次存在于多个服务器上。
在您的 web.config 中,如果您没有正确定义 <machineKey> 属性,那么 IIS 将为您组成一个机器密钥。如果您未定义,则运行该应用程序的每台服务器都将创建自己的机器密钥。结果,一个服务器能够解密并读取您的身份验证票,而下一个请求会发送到另一台无法解密身份验证票的服务器,因为它是使用不同的密钥加密的,并且该服务器认为您没有登录。
要解决此问题,请打开您的 web.config 文件并定义您的 <machineKey> 属性并重新部署。使用新部署的应用程序登录后,您应该会看到此问题消失。
Forms authentication and Machine Key information on MSDN
Machine Key Generator(很可能,到这里的每个人都应该使用生成的 .NET 2.0 版本)
【讨论】: