我在负载均衡器后面的两台服务器上设置了相同的站点。我的web.config文件中有以下内容
<sessionState mode="SQLServer" cookieless="false" allowCustomSqlDatabase="true"
sqlConnectionString="Data Source=server;Initial Catalog=ASPState;Persist Security
Info=True;User ID=user;Password=password" timeout="2880" sqlCommandTimeout="10" />
它似乎正在工作,我可以在登录时看到填充的ASPState表,但是我看到如果我在登录后刷新几次,它会在登录之间来回转换,而不是登录,具体取决于哪个服务器我打。我错过了什么吗?
我正在使用MVC 4中内置的默认webmatrix身份验证。
答案 0 :(得分:3)
这可能是因为您的服务器上有不同的 MachineKeys 或者具有默认值。因此,您的身份验证Cookie以两种不同的方式加密。
尝试在web.config中设置machineKey。这是帮助生成machineKey http://aspnetresources.com/tools/machineKey
的工具答案 1 :(得分:2)
正如this post所解释的那样,您需要在两台服务器上拥有相同的应用程序ID。
“当您创建希望使用Sql Server共享会话状态的应用程序时,它们需要在IIS中配置相同的ID。这是因为生成的会话ID是根据应用程序ID生成的。(内部应用程序ID类似于LM / W3SVC / 1 这两台服务器对IIS中的每个应用程序都有不同的ID。决议是更改“管理网站 - &gt;下的ID”。每台服务器上的“高级设置”。
干杯