request.serverVariables() "URL" против "Script_Name"

Я поддерживаю классическое приложение asp и, просматривая код, наткнулся на две похожие строки кода:

Request.ServerVariables("URL")
' Output: "/path/to/file.asp"

Request.ServerVariables("SCRIPT_NAME")
' Output: "/path/to/file.asp"

Я не понимаю... какая разница? оба они игнорируют переписывание URL-адреса, которое я настроил, и помещают папку /path в качестве корневого документа (указанный выше URL перезаписывается в "/to/file.asp")

Больше информации: сайт развернут на IIS 7

3 ответа

Решение

Это может быть ошибкой в ​​IIS 7.

Я не мог получить Request.ServerVariables("URL") а также Request.ServerVariables("SCRIPT_NAME") вернуть разные значения. Я пробовал случаи, когда они были вызваны из включенного файла (<!--#include file="file.asp"-->) или после Server.Transfer,

URL Предоставляет базовую часть URL без какой-либо строки запроса или дополнительной информации о пути. Для необработанного URL-адреса используйте HTTP_URL или UNENCODED_URL.

SCRIPT_NAME Виртуальный путь к исполняемому скрипту. Может использоваться для самообращающихся ссылок.

См. http://www.requestservervariables.com/url и /script_name для определений.

Это может быть в случае Server.Transfer?

В случае, когда вы делаете server.transfer, я думаю, что вы получите другие результаты

т.е. SCRIPT_NAME будет, например, /path/to.transferredfile.asp, тогда как URL будет оставаться как /path/to/file.asp

Другие вопросы по тегам