多个Azure Web App实例 - 数据库查询/数据不一致

时间:2015-12-14 18:37:41

标签: asp.net asp.net-mvc azure azure-sql-database azure-web-sites

我有一个Azure Web App,其自动调控配置了至少2个实例。数据库是SQL Azure。

用户将对数据进行更改,例如编辑产品的价格。更改将进入数据库,我可以在SSMS中看到它。但是,在用户刷新页面后,数据可能会也可能不会更新。

我目前的理论与拥有多个Web应用程序实例有关,因为如果我关闭自动缩放并且只有一个实例,问题就会消失。

我根本没有在Azure中配置任何类型的缓存。

1 个答案:

答案 0 :(得分:1)

听起来正如所发生的那样,数据可能会或可能不会出现,因为它存储在工作服务器的内存中(至少是暂时的)。当您有多个工作服务器时,不同的服务器可以为请求提供服务,在这种情况下,服务器将不具有内存中的值。解决方案是确保应用程序的代码在每种情况下都从数据库中重新获取值。

Azure Web Apps有一些针对此的内置保护,称为ARR关联cookie。基本上每个请求都有一个cookie来保持会话"粘性"。即,如果工作服务器正在向某个用户提供请求,则该用户也应该从该服务器接收后续请求。这是默认行为,但您可能已将其禁用。请参阅:https://azure.microsoft.com/en-us/blog/disabling-arrs-instance-affinity-in-windows-azure-web-sites/