两台服务器之间共享认证

时间:2012-12-23 03:40:06

标签: asp.net asp.net-mvc asp.net-mvc-4 forms-authentication server-farm

我在负载均衡器后面的两台服务器上设置了相同的站点。我的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身份验证。

2 个答案:

答案 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”。每台服务器上的“高级设置”。

干杯

相关问题