C# windows Azure上具有多个实例的会话变量

C# windows Azure上具有多个实例的会话变量,c#,.net,asp.net-mvc-3,azure,azure-sql-database,C#,.net,Asp.net Mvc 3,Azure,Azure Sql Database,我正在从事一个MVC3项目和SQLAzure数据库。当部署多个实例时,会话变量会出现一些问题 更清楚地说,我将表的结果存储在会话变量中,并将结果传递给模型,用户可以修改和操作数据,直到单击“保存”按钮 当用户单击“保存”时,我从模型中获取新值,并将它们传递到BLL和DAL层以更新数据库 我不知道这是否是正确的解决方案!!但客户端不会在每次数据更改时都访问数据库 请提供帮助。您遇到的问题是由于会话数据存储在本地服务器上(ASP.NET称为InProc)。当您使用多个实例时,这些数据不会在实例之间共

我正在从事一个MVC3项目和SQLAzure数据库。当部署多个实例时,会话变量会出现一些问题

更清楚地说,我将表的结果存储在会话变量中,并将结果传递给模型,用户可以修改和操作数据,直到单击“保存”按钮

当用户单击“保存”时,我从模型中获取新值,并将它们传递到BLL和DAL层以更新数据库

我不知道这是否是正确的解决方案!!但客户端不会在每次数据更改时都访问数据库


请提供帮助。

您遇到的问题是由于会话数据存储在本地服务器上(ASP.NET称为InProc)。当您使用多个实例时,这些数据不会在实例之间共享。为了实现这一点,您有两个选择:

  • 将会话数据存储在SQL Azure数据库中
  • 将会话数据存储在Azure的表存储中
  • 将会话数据存储在Azure的缓存服务中(可能是最快的,但也是最昂贵的)

这里有更多信息:

谢谢!您的回答帮助我理解了为什么在部署多个实例时它不起作用。如果您有一个更好的主意,不使用会话变量来管理数据,我将非常优雅。您可以查看ViewBag,将数据从控制器传递到视图,并查看只需读取一次的数据的ViewData。如果这些都不能帮助您,那么会话数据就可以了。只要您将其存储在SQL Azure/表存储中即可。官方建议的方法是使用AppFabric缓存作为会话提供程序。缓存或SQL Azure都是不错的选择,特别是因为自SDK v1.4添加通用提供程序以来,SQL Azure得到了完全支持。回答得好。我所做的是尽可能地消除会话使用,这将使你的应用程序更具可伸缩性。然后将Azure Blob存储用于会话状态,而会话状态在应用程序中只有2或3个位置。