首页 文章

Microsoft VBScript运行时错误'800a0009'下标超出范围:'[number: 1]' Include / Security.inc,第28行

提问于
浏览
1

我在迁移项目中工作 .

我试图迁移经典的asp应用程序 . 我不擅长经典ASP .

我从服务器上取了代码并尝试在我的机器上运行它 . 但是得到以下错误 .

Microsoft VBScript运行时错误'800a0009'下标超出范围:'[number:1]'/Include/Security.inc,line 28

请找到我遇到错误的代码块 .

Function StringConvUN
    dim tabConv
    dim rmLocation
    dim username
    username = Ucase(Request.ServerVariables("LOGON_USER"))
    if UCase(Request.ServerVariables("HTTP_AUTHORIZATION")) = "SITEMINDER" then
        StringConvUN = username
    else
        tabConv = split(username, "'")
        rmLocation = join(tabConv, "''")
        tabConv = split(rmLocation , "\")
        StringConvUN = tabConv(1)
    end if
End Function

我在第28行得到了错误

StringConvUN = tabConv(1)

IIS 6服务器中运行的代码相同 . 但在我的机器和新的IIS 7.5服务器中,它给出了上述错误 . 请帮帮我 .

3 回答

  • 0

    您可能需要检查是否在IIS中使用了正确的身份验证方法,以及Amessihel上面提到的内容 . 但这里的代码看起来有点凌乱......

    tabConv = split(username, "'")
    rmLocation = join(tabConv, "''")
    tabConv = split(rmLocation , "\")
    StringConvUN = tabConv(1)
    

    为什么不在 Replace 的初始副本中使用双引号 Replace ,如下所示:

    username = Replace(Request.ServerVariables("LOGON_USER"), "'", "''")
    

    你可以简单地使用 InstrMid 的组合来获得你想要的字符串......

    tabconv = Mid(UCase(Replace(Request.ServerVariables("LOGON_USER"), "'",   "''")), _
      Instr(Request.ServerVariables("LOGON_USER"), "\") + 1)
    

    但首先检查IIS .

  • 1

    在获取第一个元素之前,你应该检查 StringConvUN 是否为空...

    this answer . 这是一个自制函数,用于检查数组是否为空 .

  • -2

    而不是在数组中查找位置1(在这种情况下不存在),尝试获取数组中的最后一个位置,即“\”之后的所有位置

    StringConvUN = tabConv(uBound(tabConv))
    

相关问题