Azure虚拟机未保留登录用户会话

时间:2015-05-18 16:18:37

标签: asp.net-mvc-4 azure claims-based-identity azure-virtual-machine stackexchange.redis

我正在开发一个MVC4应用程序。我们在Windows Azure IAAS模型上托管了我们的应用程序。现在我们配置了2台虚拟机,一切正常。但是我们在维护用户登录方面存在问题。

如果我在虚拟机1中登录,则当下一个请求来自虚拟机2时,它不会被转移。我们已经在负载平衡上映射了两个虚拟机。

我应该研究一下Cache解决方案。任何输入都会非常有用......

谢谢, Jaswanth

2 个答案:

答案 0 :(得分:0)

你正在击中两个完全独立的虚拟机(是负载均衡,但是分开)。这要求在VM外部存储任何类型的会话数据(或者您需要同步会话内容并在两个VM中使其相同)。

Azure不会为您同步会话数据。这就是你,将它构建到你的应用程序架构中。你提到了缓存,这当然是一个可行的解决方案(你选择,但由你决定)。还有其他解决方案,例如基于数据库的会话存储。再次,这取决于你。

但最重要的是:如果您要将应用扩展到单个服务器(在这种情况下为VM)之外,以负载均衡的方式,您无法将会话数据存储在特定的虚拟机中。

答案 1 :(得分:-1)

使用持久会话状态存储(如Redis或SQL Server等)或将您的状态放在cookie中并在每个请求上读/写它。如果cookie包含敏感内容,请对其进行加密。