Форум: "Прочее";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
ВнизОшибка доступа к XML файлу через msxml Найти похожие ветки
← →
mac117 (2006-07-05 19:42) [0]а проблема вот в чем.
Есть скрипт на ASP, который использует msxml,
set SCXMLObj=Server.CreateObject("MSXML2.DOMDocument")
SCXMLObj.async=false
SCXMLObj.load("ex.xml")
при попытке загрузить XML файл, IIS выдается сообщениеmsxml3.dll error "80070005"
Access is denied.
Права доступа на целевой XML файл неоднократно просматривал, залогиненый пользователь имеет возможность читать и исполнять XML-файл.
Подскажите пожалуйста, как решить эту проблему
Заранее благодарю
← →
umbra © (2006-07-05 19:48) [1]права залогиненого пользователя и права клиента HTTP-сервера - совешенно разные вещи. Проверьте права клиента
← →
mac117 (2006-07-05 20:08) [2]что имеется ввиду под словами "клиент HTTP-сервера" - это учетная запись Windows под которой зашел юзер через IE, или учетная запись HTTP-сервера, от имени которой собственно и работает IIS?
с правами доступа к файлу все нормально
и юзер IUSR_<имя машины>
и юзер с учетной записью Windows имеют права на чтение и выполнение xml-файла
← →
umbra © (2006-07-05 20:13) [3]
> "клиент HTTP-сервера" - это учетная запись, под которой
> зашел юзер через IE
это учетная запись HTTP-сервера (т.е. IIS, а не Винды!)
АMSXML2.DOMDocument
вообще создается?
← →
mac117 (2006-07-05 20:19) [4]
> А MSXML2.DOMDocument вообще создается?
конечно создается, иначе ссылка на него была бы как Nothing
ну а у Nothing как бы свойств нет, соответсвенно строчкаSCXMLObj.async=false
вызывала бы ошибку
На счет прав доступа. Поидее если есть ошибка с правами доступа на сам файл, то при попытке его открыть, указав к нему путь, IE б выплюнул какую нить ошибку типа 404. Такая ошибка не наблюдается
← →
umbra © (2006-07-05 20:36) [5]как следует из мсдн, это ошибка СОМ, а не файловой системы. Т.е.
MSXML2.DOMDocument
все-таки создется некорректно
← →
mac117 (2006-07-05 20:39) [6]и как с этим бороться?
← →
palva © (2006-07-05 21:01) [7]> SCXMLObj.load("ex.xml")
По-моему, здесь надо указывать полный путь к файлу. Например, так:SCXMLObj.load(Server.MapPath ("ex.xml"))
Без этого сервер лезет за файлом не в ту директорию, в которой ему даже запрещен просмотр списка файлов. Отсюда сообщение Access is denied. Возможно, я не прав.
← →
mac117 (2006-07-05 21:20) [8]Да, я тоже думаю что проблема с путем.
при указании пути в DOS формате все нормально работает. Файл находится.
Т.е. кодSCXMLObj.load("C:\lala\ex.xml")
работает.
На http://support.microsoft.com/kb/281142/ указано, что нужно установить свойствоSCXMLObj.setProperty "ServerHTTPRequest", true
чтобы грузить файл по HTTP, значит поидее и путь должен быть в формате HTTP, однако загрузка не проходит.
При комбинацииSCXMLObj.setProperty "ServerHTTPRequest", true
SCXMLObj.load("http://myserver/ex.xml")
файл не грузится, но ошибка о том, что нет доступа, уже не отображается.
← →
palva © (2006-07-05 21:28) [9]По идее ваш файл ex.xml не должен быть виден из Интернета другим пользователям, поэтому сервер не должен его отдавать по http. Если бы такое происходило, это была бы ошибка в обеспечении безопасности. Вэб-сервер должен загружать файл по файловой системе. Стандартный способ, как определяется физический путь, я уже привел.
← →
mac117 (2006-07-05 21:40) [10]Я с вами согласен. Но в Microsoft приводят ряд примеров загрузки XML c других серверов по средствам ServerXMLHTTP, который и позволяет грузить XML по HTTP.
Кстати установкойSCXMLObj.setProperty "ServerHTTPRequest", true
мы и включаем этот режим.
Только вот чегото он не работает :)
← →
palva © (2006-07-05 21:57) [11]Я ничего не знаю про ServerHTTPRequest. Я, правда, не пробовал загружать XML-файлы из ASP с других серверов. А свои я всегда грузил указанным выше образом без установки setProperty.
← →
mac117 (2006-07-06 10:43) [12]Спасибо всем за помощь.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c