Я выполняю миграцию веб-сервера, работающего на IIS 5, на IIS 7. Я заметил, что виртуальные каталоги ведут себя по-разному между ними.
У меня есть сайт, расположенный по адресу c: \ inetpub \ SiteName. Этот сайт содержит виртуальный каталог «bob», который указывает на c: \ virtualdirs \ bob. В папке bob (script.asp) есть скрипт, который содержит только:
<!--#include virtual="../index.asp"-->
Я замечаю различное поведение IIS5 и IIS7, когда пытаюсь запустить скрипт, перейдя в http: //SiteName/bob/script.asp:
IIS5 ссылается на родительский путь сайта и импортирует c: \ inetpub \ SiteName \ index.asp. IIS7 ссылается на родительскую папку виртуального каталога и ищет файл c: \ virtualdirs \ index.asp (которого не существует). Выполнение Response.Write of a Server.MapPath подтверждает это.
Есть ли способ заставить IIS7 вести себя как IIS5 в этом отношении? К сожалению, перемещение index.asp и его логики в папку virtualdirs невозможно, поскольку виртуальный каталог будет совместно использоваться многими сайтами (с разными index.asps).
Спасибо.
Ответили на другом форуме: http://forums.iis.net/p/1168652/1946977.aspx
В значительной степени подтверждает, что функциональность изменилась между версиями IIS. Единственный способ исправить это - изменить любые ссылки на код с «..» на «/» (корень сайта) относительно виртуальных каталогов.
Очевидно, это не оптимальное решение, но на данный момент его нужно будет использовать.