我有一个屏幕,用户从下拉列表中选择数据库源。一旦选择了,我希望将信息传递到其他屏幕上,这样用户就不必一直选择。
如何将这样的信息从一个屏幕传递到另一个屏幕?请注意,信息只是非常小的事情:
DatasourceID - 2 characters
SubjectID - 2 characters
当我在Azure上运行时,我可以假设最好的存储位置是在客户端吗?我看到一个存储数据的实现:
Session["abc"] = "def";
if (Session["abc"] != null)
etc ...
这是最好的方式还是我错过了什么。另外,每次在不同服务器上提供页面时,上述工作方式如何?以上是否在本地存储信息?
答案 0 :(得分:2)
会话存储在服务器端。现在,在Azure中,您可以选择存储的几个选项。这取决于您想要对此数据源执行的操作。如果您在以下屏幕中只需要这些内容,则可以将其存储在会话中存储的TempData
中。它一直存在,直到你阅读它。
现在您有了存储会话状态的选项:
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的支持。
希望这有帮助。