asp classi c Строка vBscript, начинающаяся с // - PullRequest
1 голос
/ 04 апреля 2020

Я нашел на одной из моих старых страниц asp classi c строку кода 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

%>

Это полученный результат:

enter image description here

Как видите, страница asp написана на vbScript и содержит также правильные комментарии vbscript ...

1 Ответ

2 голосов
/ 04 апреля 2020

Обновление

Итак, я немного покопался с тех пор, как вы опубликовали пример кода и подтвердите, что в среде Classi c ASP код работает без ошибок и выглядит как комментарий .

Что я могу подтвердить, так это то, что это c для среды Classi c ASP. Если я пытаюсь запустить пример, используя wscript.exe в качестве хоста вместо Classi c ASP, я получаю следующую ошибку:

Ошибка компиляции Microsoft VBScript: Ожидаемый оператор

Единственный вывод, к которому я могу прийти, это своеобразный побочный эффект поддержки как VBScript, так и JScript, который означает, что препроцессор ASP не заставляет VBScript Runtime вызывать ошибку компиляции.

Вероятность заключается в том, что это случайность, которая так и не была обнаружена, поскольку страница не вызвала ошибку компиляции, как при естественном запуске VBScript.


Оригинальный ответ для процветания

Скорее всего, страница Classi c ASP была настроена на использование JScript вместо VBScript. Оба доступны по умолчанию в качестве активных языков сценариев, если они установлены.

Может быть не всегда понятно, что используется, поскольку какой язык сценариев используется по умолчанию, можно установить на уровне веб-сайта IIS, а не с помощью * Директива 1021 * или блок <script runat="server">.

Комментарии в VBScript бывают двух видов: оператор Rem и символ '. Запуск строки кода с любым из них предотвратит выполнение этого кода в сценарии.

REM This is a comment
'This is also a comment
Response.Write "Hello"

Комментарии в JScript также доступны в двух вариантах: // для однострочных комментариев и /* */ чтобы охватить несколько строк.

// This is a comment
/*
This is also a comment
*/
response.write("Hello");

Полезные ссылки

...