我使用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
答案 0 :(得分:9)
如果您有多个Azure网站实例,则负载均衡器默认启用粘性会话。这意味着用户将被定向到同一个实例(服务器),并且您将能够在您的应用中使用会话状态。
答案 1 :(得分:1)
您可能还会发现此电子书的分布式缓存部分(第12章)很有用http://aka.ms/CloudApps_PDF