如何在Azure上运行的MVC 3中将会话信息从一个屏幕传递到另一个屏幕

时间:2011-11-23 04:30:53

标签: asp.net-mvc asp.net-mvc-3 azure

我有一个屏幕,用户从下拉列表中选择数据库源。一旦选择了,我希望将信息传递到其他屏幕上,这样用户就不必一直选择。

如何将这样的信息从一个屏幕传递到另一个屏幕?请注意,信息只是非常小的事情:

DatasourceID - 2 characters
SubjectID - 2 characters

当我在Azure上运行时,我可以假设最好的存储位置是在客户端吗?我看到一个存储数据的实现:

Session["abc"] = "def";
if (Session["abc"] != null)
etc ...

这是最好的方式还是我错过了什么。另外,每次在不同服务器上提供页面时,上述工作方式如何?以上是否在本地存储信息?

1 个答案:

答案 0 :(得分:2)

会话存储在服务器端。现在,在Azure中,您可以选择存储的几个选项。这取决于您想要对此数据源执行的操作。如果您在以下屏幕中只需要这些内容,则可以将其存储在会话中存储的TempData中。它一直存在,直到你阅读它。

现在您有了存储会话状态的选项:

    Azure AppFabric Cache中的
  1. 在SQL Azure数据库中
  2. in blob storage
  3. Azure AppFabric缓存有一个很容易设置的Session提供程序。您只需在Azure门户中创建一个新缓存,然后单击工具栏上的相应按钮即可获取所需的web.config条目。这也是explained in detail here

    使用它可以将会话存储在会话中。缺点是它有点贵(128 MB缓存大约45美元/月)。因此,另一种方法是在SQL Azure中存储会话状态。有一个SQL Azure会话提供程序。

    这是Scott Hanselman对ASP.NET通用提供程序的a link to a great introduction。如果您不使用会员资格,则只需设置System.Web.Providers.DefaultSessionStateProvider即可。

    只需确保将连接字符串指向SQL Azure DB即可。注意:您必须在连接字符串中设置MultipleActiveResultSets=True,因此如果您从门户网站复制了SQL Azure连接字符串,请务必将其添加回来。

    然后在培训套件中还有一个用于博客存储的会话提供程序,可在http://code.msdn.microsoft.com/windowsazure/Windows-Azure-ASPNET-03d5dc14处使用示例应用程序。 我相信它不受MS的支持。

    希望这有帮助。