asp classic: система не может найти указанный путь

Я пытаюсь выполнить преобразование xml на стороне сервера и указываю шаблоны, которые хочу использовать в global.asa для путей, которые я указываю с помощью server.MapPath. Для файлов в одной папке некоторые находят и один выдает ошибку. Есть идеи, почему?

Например, первый найден, второй не является server.MapPath("/website_root/subFolder/XSL/A.xsl")

server.MapPath("/website_root/subFolder/XSL/B.xsl")

Ошибка говорит об ошибке msxml3.dll «80070003». Система не может найти указанный путь

Заранее спасибо.

РЕДАКТИРОВАТЬ: проблема заключается в добавлении новых шаблонов, старые объявления для файлов в той же папке отображаются нормально. Код ниже:

Dim oXSL, oXSLTemplateA, oXSLTemplateB, oXSLTemplateC, oXSLTemplateD, oXSLTemplateE
Set oXSL = Server.CreateObject("MSXML2.FreeThreadedDOMDocument")

'A.xsl
oXSL.load server.MapPath("projectRoot/SubFolder/XSL/A.xsl")
Set oXSLTemplateA = Server.CreateObject("Msxml2.XSLTemplate")
oXSLTemplateA.stylesheet = oXSL
Set Application("ATemplate") = oXSLTemplateA

'B.xsl
Set oXSL = Nothing
Set oXSL = Server.CreateObject("MSXML2.FreeThreadedDOMDocument")
oXSL.load server.MapPath("/projectRoot/SubFolder/XSL/B.xsl")
Set oXSLTemplateB = Server.CreateObject("Msxml2.XSLTemplate")
oXSLTemplateB.stylesheet = oXSL 'ERROR ON THIS LINE
Set Application("BTemplate") = oXSLTemplateB

'C.xsl
Set oXSL = Nothing
Set oXSL = Server.CreateObject("MSXML2.FreeThreadedDOMDocument")
oXSL.load server.MapPath("/projectRoot/SubFolder2/XSL/C.xsl")
Set oXSLTemplateC = Server.CreateObject("Msxml2.XSLTemplate")
oXSLTemplateC.stylesheet = oXSL
Set Application("CTemplate") = oXSLTemplateC

'D.xsl
Set oXSL = Nothing
Set oXSL = Server.CreateObject("MSXML2.FreeThreadedDOMDocument")
oXSL.load server.MapPath("/projectRoot/SubFolder2/XSL/D.xsl")
Set oXSLTemplateD = Server.CreateObject("Msxml2.XSLTemplate")
oXSLTemplateD.stylesheet = oXSL
Set Application("DTemplate") = oXSLTemplateD

'E.xsl
Set oXSL = Nothing
Set oXSL = Server.CreateObject("MSXML2.FreeThreadedDOMDocument")
oXSL.load server.MapPath("/projectRoot/SubFolder2/XSL/E.xsl")
Set oXSLTemplateE = Server.CreateObject("Msxml2.XSLTemplate")
oXSLTemplateE.stylesheet = oXSL 'ERROR ON THIS LINE
Set Application("ETemplate") = oXSLTemplateE

РЕДАКТИРОВАТЬ: Если я изменю E.xsl на случайное имя, которого, как я знаю, не существует. Ошибка отличается, она будет говорить об ошибке msxml3.dll «80004005». Таблица стилей не содержит элемент документа. Таблица стилей может быть пустой или может быть неправильно сформированным XML-документом.


person Megaman    schedule 11.05.2020    source источник
comment
Возможно разрешения?   -  person user692942    schedule 11.05.2020
comment
Я проверил, и это то же самое для обоих файлов.   -  person Megaman    schedule 11.05.2020
comment
Что такое website_root? Путь в Server.MapPath должен быть после root, т.е. если ваш site_root остается для root, тогда вы вызываете Server.MapPath("/subFolder/XSL/A.xsl"). Отладьте свой код с помощью Response.Write и выведите полный путь после выполнения Server.MapPath. Сообщение ясно говорит, что не может найти путь.   -  person user2316116    schedule 11.05.2020
comment
Этот код находится в файле global.asa. Есть ли способ распечатать заявление оттуда?   -  person Megaman    schedule 11.05.2020
comment
@ user2316116 зависит от того, был ли он создан как дочерние сайты, что я видел. Не супер, но бывает.   -  person user692942    schedule 11.05.2020
comment
@Megaman Без дополнительной информации о настройке и конфигурации вашего веб-сервера мы можем только догадываться. Создайте test.asp/aspx и выведите response.write Server.MapPath("/website_root/subFolder/XSL/A.xsl"), чтобы убедиться, что вы получили ожидаемый путь, который существует.   -  person user2316116    schedule 11.05.2020
comment
спасибо @ user2316116, я попробовал это утверждение, и оно указало правильный физический путь. Я даже пытался смешать верхний и нижний регистры, и он печатает правильный физический путь с правильным регистром букв.   -  person Megaman    schedule 12.05.2020
comment
В коде у вас нет начального / в oXSL.load server.MapPath("projectRoot/SubFolder/XSL/A.xsl"), поэтому, возможно, вам следует удалить его на других?   -  person Daniel Nordh    schedule 12.05.2020
comment
нет, у них у всех такое заявление. В первом блоке он просто устанавливается в первый раз перед ним, поэтому я не устанавливаю для него значение Nothing, прежде чем установить для него значение Server.CreateObject.   -  person Megaman    schedule 12.05.2020


Ответы (1)


Файл xsl импортировал другой файл xsl, который использовал полный путь и ничего не находил. Я изменил это на относительный путь, и это сработало.

person Megaman    schedule 12.05.2020