Azure中的.NET Forms身份验证 - 多个VM需要进行哪些更改?

QFD*_*Dev 3 .net session forms-authentication session-state azure

我们目前正在将.NET Web应用程序迁移到Azure云服务,其中Web层在多个节点上运行(最初为两个).我想知道我们应该如何修改基于表单的身份验证机制以在负载平衡环境中运行?这是我们过去从未需要考虑的因素,因为我们的应用程序始终仅限于一个物理服务器.

目前我们在web.config中定义受保护的文件夹:

<location path="secure-area">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>
Run Code Online (Sandbox Code Playgroud)

登录页面中的代码如下所示:

if accountIsValid = true then
   FormsAuthentication.SetAuthCookie(sessionID, False)
   response.redirect("secure-area/index.aspx")
end if
Run Code Online (Sandbox Code Playgroud)

然后在整个应用程序中检索活动会话,如下所示:

Dim sessionID as string = User.Identity.Name.ToString
Run Code Online (Sandbox Code Playgroud)

据推测,此方法不会自动在多个节点上保持会话状态?我想知道Azure Fabric Controller是否会为我排序所有这些,而不必进行代码更改.也许是一厢情愿的想法!

任何帮助或链接到在线指南将非常感谢!

Jus*_*ith 5

这不是关于Azure的问题,更多是关于使用负载平衡的ASP.NET应用程序的表单身份验证.表单身份验证使用服务器上的machineKey来加密发送到客户端的cookie.默认情况下,每个实例在服务器上随机生成此密钥.要使表单auth在多个节点上工作,您需要在web.config中的两个实例中将机器密钥设置为相同.这里有一些例子:

表单身份验证是否适用于Web负载均衡器?

http://msdn.microsoft.com/en-us/library/eb0zx8fc(v=vs.100).aspx

http://support.microsoft.com/kb/910443

希望这可以解决,快乐的编码!