以开头的asp经典vBscript行//

以开头的asp经典vBscript行//,vbscript,asp-classic,Vbscript,Asp Classic,我在一个旧的asp经典页面中发现了一行以//开头的vbScript代码,这是一个错误(用//而不是')注释一行代码 我注意到错误的注释行作为正确的注释行工作。 有人知道为什么?? 谢谢 莱昂纳多 我从那条旧代码中举了一个小例子: <% Response.Write "<u>testAsp.asp</u><hr/>" V_Password="pwd" //V_Password = Str2Hex(V_Password) Response.Write "

我在一个旧的asp经典页面中发现了一行以//开头的vbScript代码,这是一个错误(用//而不是')注释一行代码

我注意到错误的注释行作为正确的注释行工作。 有人知道为什么?? 谢谢 莱昂纳多

我从那条旧代码中举了一个小例子:

<%
Response.Write "<u>testAsp.asp</u><hr/>" 
V_Password="pwd"
//V_Password = Str2Hex(V_Password)

Response.Write "V_Password=" + V_Password + "<br/>"
Response.Write "V_Password(hex)=""" + Str2Hex(V_Password) + """"

function Str2Hex(s)
' -- converte stringa di byte (non caratteri ascii!!) in formato esadecimale
'
'    The Asc function returns the ANSI character code corresponding 
'    to the first letter in a string.
'    The AscB function is used with byte data contained in a string. 
'    Instead of returning the character code for the first character, 
'    AscB returns the first byte. 
'    AscW is provided for 32-bit platforms that use Unicode characters. 
'    It returns the Unicode (wide) character code, thereby avoiding 
'    the conversion from Unicode to ANSI.

  dim k, out, MultiByte
  out=""
  for k=1 to len(s)
    'response.Write("|" & hex(ascb(Mid(s,k,1))) & "|<br>" & vbCrLf)
    out=out & hex(ascb(mid(s,k,1)))
  next
  Str2Hex="0x" & out
  'response.write(out & vbCrLf)
end function

%>

这是生成的输出:

如您所见,asp页面在vbScript中,并且还包含正确的vbScript注释…

Update 因此,在您发布示例代码并确认在经典ASP环境中,代码运行时没有错误,并且表现得像注释之后,我进行了一些挖掘

但我可以确认的是,这是一个典型的ASP环境特有的。如果我尝试使用
wscript.exe
作为主机而不是传统ASP来运行该示例,我会得到以下错误:

Microsoft VBScript编译错误:应为语句

我能得出的唯一结论是,支持VBScript和JScript会产生一种特殊的副作用,这意味着ASP预处理器不会导致VBScript运行时抛出编译错误

很可能这是一个从未被发现的意外,因为页面没有像运行VBScript那样强制编译错误


繁荣的原始答案 很可能经典的ASP页面设置为使用JScript而不是VBScript。这两种语言都可以作为默认的活动脚本语言使用

可能并不总是很清楚使用的是什么,因为默认情况下使用的脚本语言可以在IIS网站级别设置,而不是使用
@language
指令或

VBScript中的注释有两种风格,即
Rem
语句和
字符。用其中一个开始一行代码将阻止在脚本中执行该代码

REM这是一条评论
"这也是评论
回答,写“你好”
JScript中的注释也有两种风格,一种是单行注释的
/
,另一种是跨多行注释的
/**/

//这是一条注释
/*
这也是一个评论
*/
回复。写下(“你好”);

有用的链接

确定它是VBScript而不是JScript,这两种语言都可以作为活动脚本语言使用,经典ASP可以开箱即用?如果您能提供一个关于您看到的行为的最小示例,这将有所帮助。是的,我确定。没有@语言指令。您的回答是明智的。这段旧代码最初在IIS6上运行,现在在IIS10上运行。在我的例子中,我在VisualStudio2019的一个小型ampty项目中包含了要调试的asp代码。现在我认为我必须控制iis express的配置。正如您在示例中看到的,执行并没有在//V_Password=…处停止,我删除了它,因为它只是一个猜测,但我已经设法对它进行了研究,VBScript变量不能包含正斜杠字符,所以不能是正斜杠字符。