Azure中的.NET Forms身份验证 - 多个VM需要进行哪些更改?
问题描述:
我们正在将我们的.NET Web应用程序迁移到Azure云服务,并在多个节点(最初两个)上运行Web层。我想知道我们应该如何修改基于表单的身份验证机制以在负载平衡环境中运行?这是我们过去从来不需要考虑的一个考虑因素,因为我们的应用程序一直只限于一台物理服务器。Azure中的.NET Forms身份验证 - 多个VM需要进行哪些更改?
目前我们定义在web.config保护的文件夹为这样:
<location path="secure-area">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
在登录页面的代码工作是这样的:
if accountIsValid = true then
FormsAuthentication.SetAuthCookie(sessionID, False)
response.redirect("secure-area/index.aspx")
end if
然后主动会话在整个检索该应用程序是这样的:
Dim sessionID as string = User.Identity.Name.ToString
据推测,这种方法不会自动售货机在多个节点上坚持会话状态?我想知道Azure Fabric Controller是否可以为我排序所有这些,而无需更改代码。也许真心想!
任何帮助或链接到在线指南将不胜感激!
答
这不是一个关于Azure的问题,更多的是关于使用负载均衡的ASP.NET应用程序进行表单身份验证的问题。表单身份验证使用服务器上的machineKey来加密发送到客户端的cookie。默认情况下,此密钥是每个实例在服务器上随机生成的。要使表单身份验证在多个节点上工作,需要将您的web.config中的两个实例的机器密钥设置为相同。这里有几个例子:
Does Forms Authentication work with Web Load Balancers?
http://msdn.microsoft.com/en-us/library/eb0zx8fc(v=vs.100).aspx
http://support.microsoft.com/kb/910443
希望这个作品出来,编码快乐!
谢谢!你提到的堆栈溢出线程似乎回答我的问题,感谢帮助! – QFDev 2013-02-21 20:25:04