У меня есть сервер VB6 для классического сайта ASP. Затем VB вызывает веб-службу на том же сервере, используя MSXML2.XMLHTTP. Это работает на всех наших серверах, кроме одного. Если я установил сайт веб-службы для приема анонимного входа, он будет работать, однако, если я наведу только интегрированную безопасность, MSXML вернет ошибку Access Denied.Доступ запрещен с использованием MSXML
Я использую код из примера here.
Set objDom = CreateObject("MSXML2.DOMDocument")
Set objXmlHttp = CreateObject("MSXML2.XMLHTTP")
' Load XML
objDom.async = False
objDom.loadXML XmlBody
' Open the webservice
objXmlHttp.Open "POST", AsmxUrl, False
' Create headings
objXmlHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
objXmlHttp.setRequestHeader "SOAPAction", SoapActionUrl
' Send XML command
objXmlHttp.send objDom.xml
Edit: Следуя совету AnthonyWJones я пошел вниз контрольный список, и он до сих пор не работает. Используя Fiddler, он показывает один запрос с ответом 401. На закладке проверки подлинности отображается:
No Proxy-Authenticate Header is present.
WWW-Authenticate Header is present: Negotiate
WWW-Authenticate Header is present: NTLM
Я заметил странное поведение. Когда я вызываю веб-сайт, используя учетные данные пользователя, зарегистрированного на удаленном рабочем столе, он будет работать. Я получаю переговоры, вызов, а затем 200, и он будет работать. Любые идеи, почему это будет работать, когда пользователь войдет в систему через удаленный рабочий стол, но не в другое время?
Какая операционная система работает от сломанного клиента? Является ли имя хоста целевого сервера «равным» (содержит ли оно точки?). Если нет, то назначение в зону интрасети происходит через прокси-скрипт (http://msdn.microsoft.com/en-us/library/bb250483(VS.85).aspx), и, таким образом, если ваше клиентское приложение не является По какой-то причине использовать прокси-сервер, присвоение зоны не удастся, и вы столкнулись бы с таким поведением. – EricLaw
Windows server 2003 R2 - это OS, которую я использую, я использую. Имя хоста целевого сервера является простым и не содержит точек. Если я перейду к веб-сервису с помощью браузера, он будет отображаться как зона локальной интрасети.В разделе «Свойства обозревателя» -> «Соединения» -> «Настройки локальной сети» ни один из трех полей не установлен. Может быть, он пытается использовать другую конфигурацию, когда проводник не загружен для этого пользователя? – Ryan