【问题标题】:ASP Len() function returns Type Mismatch errorASP Len() 函数返回类型不匹配错误
【发布时间】:2017-04-25 01:36:48
【问题描述】:

下面是我的经典 ASP 应用程序的服务器端 ASP 代码:

Function isValidPACSSession()
...
Dim sessionID : sessionID = Request.QueryString("forSessionID")
isValidPACSSession = SessionID2PACSUserID(sessionID)
...
End Function

Function SessionID2PACSUserID(sSessionID)
if (Not IsNull(sSessionID) AND Len(sSessionID) > 0) then
            ...it fails here at the Len function.
        else
            ...
        end if
End Function

Len() 函数针对这个特定实例抛出“类型不匹配”错误,而其他组件对 SessionID2PACSUserID() 的其他调用很好。请帮忙。

【问题讨论】:

  • 如果Request.QueryString("forSessionID")为null会失败,请确保不是通过sessionID = Request.QueryString("forSessionID") & ""Len(sSessionID & "")这个小技巧(个人更喜欢在设置我的变量时这样做)。更大的问题是,为什么你将 sessionID 作为查询字符串传递?
  • 这是问题,我检查了调试器 Request.QueryString("forSessionID") 的值为 String 类型的“F50DAA7A37494A51A0A157D917FACF891129”。仍然 len() 函数抛出类型不匹配错误。
  • 你是怎么调试的?另外,您是否尝试过这些建议,无论是否有所作为?至少尝试一下,这样可以消除它,我们尝试其他方法,假设可能是一个问题。
  • 我正在使用 Visual Studio 2010 进行调试。我已经尝试按照您的建议通过修改 SessionID2PACSUserID() 函数来测试代码,但它仍然不起作用。顺便说一句,它的所有服务器端经典的 asp 代码。

标签: vbscript asp-classic


【解决方案1】:

看起来你只是想检查一个值是否存在,为什么不做类似的事情:

dim sessionLength : sessionLength = 0
if (Not IsNull(sSessionID) AND sSessionID <> "") then
    sessionLength = Len( sSessionID )

我也同意上述VS调试器不能很好地与经典asp一起使用的说法

【讨论】:

  • 谢谢。但我还需要字符串的长度才能将其用于 DB Query 目的。
【解决方案2】:

找到了解决方案。实际上,我在调用网页上有一个名为“len”的局部变量,导致 len() 失败。将 len 变量名称更改为 nLength 并且 Len() 现在可以正常工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    • 2014-09-12
    相关资源
    最近更新 更多