我们有一个曾经在单个实例中运行一段时间的 Web 角色。为了应对更高的负载(并获得更好的 SLA),我们目前正在迁移角色以支持多个实例。
该角色使用表单身份验证(带有自定义成员资格提供程序),我们的理解是我们必须在实例之间启用某种共享会话状态,因此如果用户在实例 1 上登录并获取他的.ASPXAUTH
cookie,那么实例 2知道这个cookie。
我们这样做了,目前该角色在两个实例上运行,并且一切正常。我们测试了用户保持登录状态,即使他的请求是在他登录的实例之外的另一个实例上处理的。如果用户没有登录,访问将被拒绝。
我们还检查了是否TableStorageSessionStateProvider
在 Azure 表存储帐户中创建了一个表,并且确实有一个Sessions
包含PartitionKey
,RowKey
和Timestamp
列的表。
但是,令我们惊讶的是,Sessions
桌子总是空着。无论有多少用户登录,表中都没有数据。
如果不通过Sessions
表,这些实例如何通信?