У меня есть бэкэнд VB6 для классического сайта ASP. Затем этот VB вызывает веб-службу на том же сервере с помощью MSXML2. Это работает на всех наших серверах, кроме одного. Если я настрою сайт веб-службы на прием анонимного входа в систему, он будет работать, однако, если я использую только встроенную безопасность, MSXML вернет ошибку «Доступ запрещен».
Я предполагаю, что учетные данные не передаются из бэкэнда VB на этом сервере в веб-службу. По каким причинам это могло произойти?
Редактировать: Я получаю сообщение об ошибке. Получаю, когда захожу на сайт с сервера или другого компьютера. Если я перейду прямо к веб-сервису, все будет работать нормально.
2009-07-16 13:56:47 W3SVC1 <IP Address> POST /reportprint/reportprint.asmx - 80 - <IP ADDRESS> Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.2;+SV1;+.NET+CLR+1.1.4322;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729) 401 2 2148074254
Есть много проблем с передачей учетных данных в устаревших приложениях. Я предполагаю, что материал VB6 использует NTLM, и сервер его не примет.
Вы можете получить дополнительную помощь в этом на Stack Overflow.
Обновить: Попробуйте настроить веб-сайт на проверку подлинности NTLM (вместо NTLM и Kerberos по умолчанию).
open cmd.exe
go to directory:
C:\Inetpub\AdminScripts
type:
cscript adsutil.vbs set w3svc/<WebSite>/root/NTAuthenticationProviders "NTLM"
измените "WebSite" на номер веб-сайта (можно увидеть в mmc). Подробности в «Как настроить IIS для поддержки протокола Kerberos и протокола NTLM для сетевой аутентификации»
Ошибка 401.2: «Запрещено конфигурацией сервера». Вы можете прочитать об этом Вот и Вот.
Перед обновлением: Вы уверены, что учетные данные не передаются с сайта asp? Попробуйте ввести этот сайт в анонимный вход. И настройте пул приложений для работы с учетной записью с высокими привилегиями (только временно!) И посмотрите, решит ли это проблему.
Кроме того, можно ли вставить строку из журнала iis? Особенно код ошибки (401 и следующие два числа).