我在迁移项目中工作。
我试图迁移经典的asp应用程序。我不擅长Classic ASP。
我从服务器上取了代码并试图在我的机器上运行它。但是得到以下错误。
Microsoft VBScript运行时错误'800a0009'
下标超出范围:'[数字: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服务器中,它给出了上述错误。请帮助我。
答案 0 :(得分:1)
您可能需要检查是否在IIS中使用了正确的身份验证方法,以及Amessihel上面提到的内容。但这里的代码看起来有点乱......
tabConv = split(username, "'")
rmLocation = join(tabConv, "''")
tabConv = split(rmLocation , "\")
StringConvUN = tabConv(1)
为什么不在Replace
的初始副本中Request.ServerVariables("LOGON_USER")
单引号加双打,如下所示:
username = Replace(Request.ServerVariables("LOGON_USER"), "'", "''")
您可以简单地使用Instr
和Mid
的组合来获取您想要的字符串...
tabconv = Mid(UCase(Replace(Request.ServerVariables("LOGON_USER"), "'", "''")), _
Instr(Request.ServerVariables("LOGON_USER"), "\") + 1)
但请先检查IIS。
答案 1 :(得分:0)
在获取第一个元素之前,您应该检查StringConvUN
是否为空......
见this answer。这是一个自制函数,用于检查数组是否为空。
答案 2 :(得分:-2)
不是在数组中查找位置1(在这种情况下不存在),而是尝试获取数组中的最后一个位置,即“\”之后的所有位置
StringConvUN = tabConv(uBound(tabConv))