【问题标题】:Classic ASP - Application stopping with Session data经典 ASP - 应用程序停止会话数据
【发布时间】:2014-09-11 07:22:03
【问题描述】:

我正在研究一些经典的 ASP 函数。

在一个 wsc 文件中,我像这样设置会话。

Session("ordertype") = "morning"

然后在另一个 wsc 文件中检查它是否存在。

If Session("ordertype") Is Nothing Then
    ' Do stuff here
End if

但每次检查会话是否存在时,应用程序都会停止。

我做错了什么?

【问题讨论】:

  • 如果你使用Session.Contents("ordertype")有什么变化吗?
  • if len(Session("ordertype"))>0 then。在这种情况下,我从未使用过“Is Nothing”,不确定是不是你的错误。
  • @MarceloBarbosa 你不会因为它是string 但如果它包含一个对象引用它会。

标签: session asp-classic


【解决方案1】:

Is 运算符有效,但在您尝试使用它的上下文中无效。

来自 VbScript 参考

比较两个对象引用变量。

result = object1 Is object2

如果您使用Set 命令设置对象引用,那么使用这种比较是可以接受的。

在这种情况下,尽管您的Session("ordertype") 包含一个不是对象引用类型的字符串,但请使用简单的Len() 检查来检查您是否分配了一个字符串。为了避免 Null 使用

'Check Length of Session value avoid Null by concatenating empty string.
If Len(Session("ordertype") & "") > 0 Then
  'Do Stuff here
End If

替代方法

您也可以使用VarType(Session("ordertype")) 首先检查您的会话变量类型,以避免像@ZeeTee 建议的那样出现空值。

【讨论】:

  • @ZeeTee 这个 db 对象在哪里? Session("ordertype") = "morning" 我的朋友是string 仅此而已。
  • @ZeeTee 你在干什么?仅仅因为他们写了If Session("ordertype") Is Nothing Then 并不正确。该值在代码示例Session("ordertype") = "morning" 中,它是一个字符串,我不知道您从空中提取的这个 "db object" 引用来自何处。 OP 没有提到数据库、连接或类似的东西,这都是你的假设。
  • 好的,那么你不能使用Is Nothing 是答案,因为变量不是对象。如果您进行编辑,我将删除我的反对票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 2016-04-15
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
相关资源
最近更新 更多