【发布时间】:2019-08-11 17:40:38
【问题描述】:
我对 VB.NET 有点陌生。我有一个设置 2 个会话变量并重定向到第二页的页面。第二页至少使用其中一个会话变量。我可以说,因为在第二页上,如果会话变量不正确,用户将被重定向到拒绝访问页面。第二页也使用了有问题的会话变量。它将根据变量的值读取它并填充网格视图。我像这样设置变量
Session("ID") = Convert.ToInt32(a_value)
在第二页上我像这样检索变量
a_page_variable = Session("ID")
我觉得奇怪的是,当我在 Visual Studio 中运行此代码时,它按预期工作,但是当我部署并运行它时,我从会话变量中得到 0 而不是“a_value”的真实值。我尝试了一些方法,例如确保数据类型在页面之间匹配并尝试不同的方法来检索变量,例如
Session("userID")
和
CType(Session.Item("userID"), Int32)
我还尝试通过使用查看进入第二页的内容
Response.Write
我还尝试使用 SQL Profiler 查看正在执行什么样的调用来填充 gridview,但我没有任何运气。 gridview 给了我一个空数据集,Profiler 没有检测到应用程序的调用。我认为使用会话变量非常简单,但显然我遗漏了一些东西。
感谢您的帮助, 比利
【问题讨论】:
-
在您部署的 web.config 中如何配置会话存储?部署环境是什么样的?例如是否可能不止一个 IIS 服务器(例如在集群中,每个请求都可能被负载平衡器重定向到不同的物理服务器 - 我问这个是因为在那种情况下服务器需要共享会话数据,可能存储在数据库中)?没有配置和代码信息,很难给出具体的建议。代码描述很有用,但实际上很难修复!
-
我对 .NET 有点陌生,我不知道如何回答第一个问题。我怎样才能知道?就部署环境而言,只有一台IIS服务器
-
通过查看您的 web.config 文件。 c-sharpcorner.com/UploadFile/484ad3/session-state-in-Asp-Net 可能会帮助您了解不同的会话存储选项以及在文件中查找的内容。
-
谢谢。我会检查一下。
-
好的,那么我们似乎可以排除这种情况。正如下面的答案所指出的,会话问题还有许多其他可能的原因。由于这似乎是一个环境问题(即它在本地环境中工作,但在服务器中不起作用),那么您的代码出错的可能性较小。由于我们对您的环境没有任何可见性,因此除了为可能的搜索区域提出建议之外,真的很难做任何事情。抱歉,除了下面的内容之外,我真的没有什么要补充的了。