虽然没有使用TempDataProvider,但是每次刷新都会注销?

时间:2010-01-05 13:18:37

标签: asp.net-mvc amazon-web-services

我有一个使用asp.net mvc构建的应用程序,并部署了2个Amazon EC2个实例。我正在使用表单身份验证来验证用户身份。我只是快速查看给定的用户名和密码,如果我找到匹配项,我会设置一个身份验证cookie,如下所示:

if(_repository.Login(username, password))
    FormsAuthentication.SetAuthCookie(username, false);

只要应用程序在一台计算机上,这样就可以正常工作,但是,一旦我利用Amazon Elastic Load Balancing在两台计算机上部署该站点,该站点就会以非常奇怪的方式运行。当用户登录时,站点识别登录用户,刷新一两次后,该站点不再将该用户视为登录用户。如果用户再次刷新一段时间,应用程序会再次将用户视为登录用户,这将永远消失。
我知道如果我存储SessionState inproc可能会出现这样的问题。 我根本没有使用SessionState

我在这里想念的是什么?

Ps :我已经编辑了会话状态以存储在状态服务器上[虽然我在我的应用程序的任何地方都没有使用会话或TempData]并且存在相同的奇怪行为。

1 个答案:

答案 0 :(得分:2)

您需要在服务器场中的所有服务器之间同步<machinekey>。否则,表单身份验证票证仅适用于发出它的计算机。我怀疑这与Session / TempData有什么关系。