何时在ASP.NET(MVC)中使用Azure缓存服务进行会话

时间:2014-02-01 08:14:11

标签: asp.net session caching azure azure-caching

我读到在Azure中托管的ASP.NET Web应用程序中使用Session对象时,如果请求由另一台(虚拟)机器处理,则应用程序无法看到另一台虚拟机的Session变量(显然),所以它建议使用Azure缓存服务。

只是理解:

这些' 虚拟机交换机 '是否也会在“普通”网站中发生?

我的意思是:如果我没有配置冗余(即多个实例),我是否有“不看”会话变量的风险?

提前致谢。

AB

1 个答案:

答案 0 :(得分:1)

如果您将Azure网站与单个实例一起使用,那么您可以在技术上使用进程内会话存储,因为所有请求都由同一实例处理。即使在Azure网站中使用多个实例,默认行为是使用具有“粘性”负载平衡的ARR,以便将特定客户端的所有请求路由到同一实例。

但是,仍有时候所有进程内会话数据都可能丢失。如果实例失败,则该站点将快速转移到另一个实例,并且任何内存中(或磁盘上)数据都将丢失。因此,最好使用某种形式的独立持久存储(如缓存,表存储或SQL数据库)作为会话数据(如果它在任何方面都是必不可少的)。我相信所有ASP.NET会话提供程序都会出于性能原因维护底层存储的进程内缓存。

如果您使用Cloud Service来运行您的站点,那么所有可用实例之间的所有请求都是负载平衡的,因此单独的会话存储是必不可少的。