目前建议在Azure网站中为会话变量和TempData启用会话?

时间:2014-08-15 02:00:53

标签: asp.net-mvc session azure azure-web-sites

我使用SQL Azure在Azure网站上部署了MVC3,ASP.NET 4.5 Web应用程序。

目前我正在使用一些我需要删除的“inproc”会话变量,因为我将开始使用多个网站实例。我可以将Session变量值存储在SQL Azure DB中,但我也使用TempData,它也使用会话状态,“在引擎盖下”。由于TempData的使用,我确实需要实现一个“out of proc”会话解决方案。

我已经看到了一些使用AppFabric缓存的建议,但我不确定这是否仍然是最新的,以及它是否适用于Azure网站。

此外,我的开发设置在带有SQL Server 2008 R2的Windows 7计算机上。因此,解决方案应该可以在最小的痛苦下进行转移。

会话变量也存在“线程敏捷性”问题,并且使用REDIS缓存创建了一个开源解决方案,但我没有这方面的经验,或者REDIS。请参阅:GitHub site

我的想法是:

1)Angieslist / AL-redis自定义提供程序,请参阅:GITHUB link。不完全确定这可以在Azure网站应用程序中使用。

2)Appfabric。不确定这对Azure网站是否相关或最新。

3)SQL Azure会话提供程序。

4)Azure表存储。

5)使用客户TempData提供程序通过cookie(https://www.nuget.org/packages/BrockAllen.CookieTempData.dll/1.2.2)保留,然后删除其他会话变量。

我非常感谢有关良好的Azure网站会话实施机制的建议,这很简单。我的数据非常简单。我想我有一个对象,我需要序列化,可能是通过Json.NET

2 个答案:

答案 0 :(得分:9)

如果您有多个Azure网站实例,则负载均衡器默认启用粘性会话。这意味着用户将被定向到同一个实例(服务器),并且您将能够在您的应用中使用会话状态。

答案 1 :(得分:1)

您可能还会发现此电子书的分布式缓存部分(第12章)很有用http://aka.ms/CloudApps_PDF