Я отвечаю на свой вопрос здесь:
Эта проблема возникает из-за того, что при вызове в Application_OnStart , MapPath неправильно включается контекст страницы, вызвавший запуск приложения. Если первая ASP-страница, запускаемая, когда приложение еще не запущено, находится не в корне виртуального корня, то MapPath запутывается и добавляет путь к вызываемой ASP-странице к пути, который она возвращает.
Так, например, если страница, запустившая приложение, находилась в "c: \ inetpub \ wwwroot \ testapp \ folder1 \ folder2 \ test.asp" , тогда MapPath неправильно добавит "\ folder1 \ folder2 " в середину пути и возврат " c: \ inetpub \ wwwroot \ testapp \ folder1 \ folder2 \ xsl \ transform.xsl "
Если на вашем сайте есть файлы только в корневой папке или вы не используете MapPath в global.asa , вы никогда не заметите эту маленькую странность. Я подозреваю, что есть много сайтов ASP Classic, которые иногда не запускаются должным образом из-за этого, но их владельцы просто быстро меняют настройки, не зная, что именно пошло не так.
Результатом этого является то, что вы не можете надежно использовать MapPath в global.asa , если у вас есть веб-сайт с файлами ASP где-либо, кроме корневой папки.
Если это одноразовый сайт, то самое простое решение - просто жестко закодировать любые пути, которые вы используете в global.asa .
Если вы продаете продукт другим людям на основе ASP Classic, то жесткое кодирование путей не подходит. Вы должны либо полностью исключить использование MapPath из запуска приложения, либо решить проблему, записав пути в файлы ASP в рамках программы установки.