2017-05-05 114 views
0

我有一个最近开始遇到问题的Web表单应用程序。应用程序部署在SharePoint上。我们有多个用户将数据输入到调度程序中。在多个用户之间传递页面间参数

每个用户都有权访问不同的设施,我一直在使用HttpRuntime.Cache["FacN"]值将设施号传递给用户。

在调度程序窗体上,我通过将隐藏字段设置为该缓存值来过滤LinqToSql连接。调度程序应该只显示该设施的数据。

它工作正常,直到我们有几个用户在同一时间输入数据(在IE,SharePoint服务器)。如果2个用户同时输入数据 - 那么他们会看到来自不同设施的事件。

我也试过使用HttpContext.Current.Session["FacN"] - 但在那种情况下,它并没有保留设施的价值。请告诉我如何通过设施参数?

+0

缓存是所有用户共享的,这就是它的目的。会话是针对每个用户的,但是您需要确保实际识别用户,以便他们在下一次操作中恢复会话。阅读会话如何工作以及需要做什么才能使其工作。 –

+0

谢谢。我们使用的是SharePoint,既不是cookies也不是会话。我不知道还有什么可以尝试的。我已将它切换为使用查询字符串,但需要找到一种方法将参数传递回默认页面而不使用查询字符串。 – Alla

+0

我认为会话状态是正确的使用方法,所以我建议试着弄清楚为什么它不适合你。从https://msdn.microsoft.com/en-us/library/ff648090.aspx开始阅读文档可能会为您提供一些线索。 –

回答

0

您可以使用FacN添加时间戳变量。

  1. 第一个用户和第二个用户同时获得带有时间戳的FacN。
  2. 第一个用户更新FacN,时间戳将被更改。
  3. 第二个用户想更新FacN,需要比较时间戳,如果不同则返回更新失败。