У нас возникли проблемы при развертывании веб-службы, которая работает в нашей среде разработки, но не в производстве. Частично проблема заключается в том, что наши производственные серверы сбалансированы по нагрузке, поэтому для обновления одного из серверов мы должны вывести его из баланса нагрузки и попытаться протестировать сервер изолированно, что является сложной задачей.
Компьютер, на котором я работаю, называется Web01
, а компьютер, который я использую для тестирования, называется Ts01
. На обеих машинах я изменил файл hosts для перенаправления mydomain.com
на соответствующий IP-адрес веб-сайта на Web01
.
Я тестирую два способа доступа к веб-сервису на каждой машине:
Вот результаты теста:
Browser VB6 App
Ts01 OK OK
Web01 OK ERROR
Тест, похоже, работает нормально для всех ситуаций, кроме приложения VB6, установленного на веб-сервере. Ошибка, которую я получаю обратно:
-2147024809 - WSDLReader: сбой загрузки файла WSDL HRESULT = 0x80070057 - WSDLReader: сбой синтаксического анализатора XML для белья 0, позиция 0, причина: система не может найти указанный объект.
HRESULT = 0x1
Я получаю ту же ошибку на Ts01
, если я предоставляю неверный WSDL-адрес в приложении VB6. Кажется, что приложение VB6 на Web01
не может получить доступ к dll веб-службы на Web01
, что является большой проблемой.
Возможно, стоит отметить, что он работает и на моей локальной машине разработчика, где у меня установлено приложение VB6 и веб-служба на одной машине.
Почему у приложения VB6 могут возникнуть проблемы с обменом данными с веб-службой через SOAPClient
при запуске из того же окна, в котором существует веб-служба?
Я использовал fiddler для проверки заголовков запросов на моей локальной машине, вызывающей наш сервер разработки. Вот разница между запросами браузера и SOAP-клиента:
Браузер:
GET http://devserver/services/myservice.asmx?WSDL HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/x-shockwave-flash, */*
Accept-Language: en-us
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: devserver
Cookie: SIFR-PREFETCHED=true
SOAPClient (из приложения VB6):
GET http://devserver/services/myservice.asmx?WSDL HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)
Host: hbhswebnet
Connection: Keep-Alive
Pragma: no-cache
Я не уверен, что эта информация полезна, но, возможно, это так.