Я могу просто позвонить веб-службе стороннего поставщика из программы форм Windows. Когда я пытаюсь вызвать один и тот же веб-службы и веб-метод и тот же URL из веб-службы WCF, я получаю следующее сообщение об ошибке:«Не удается подключиться к удаленному серверу»
ExportValuationPolicyNumber:Exception=System.Net.WebException: Unable to connect to the remote server --->
System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly
respond after a period of time, or established connection failed
because connected host has failed to respond 66.77.241.76:80
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetRequestStream()
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at TFBIC.RCT.WCFWebServices.ExpressLync.ValuationServiceWse.ExportValuationPolicyNumber(String PolicyNumber) in c:\Source\TFBIC.RCT.WCFWebServices\TFBIC.RCT.WCFWebServices\Web References\ExpressLync\Reference.cs:line 519
at TFBIC.RCT.WCFWebServices.ValuationService.ExportValuationPolicyNumber(String PolicyNumber) in c:\Source\TFBIC.RCT.WCFWebServices\TFBIC.RCT.WCFWebServices\ValuationService.svc.cs:line 97
Я в основном пытаюсь написать WCF оболочку для поставщика .asmx/WSE3 оказание услуг. Давайте не будем уходить, но Microsoft говорит, что WCF может вызывать WSE3, но только с включенным SSL, и мой поставщик - верьте или нет - не разрешает SSL-соединение. Поэтому я начал писать обертку, чтобы я мог позвонить из BizTalk 2009. Сейчас я тестирую оболочку через консольную программу.
Что я могу сделать для отладки? Я добавил трассировки EventLog до и после службы WCF, где он вызывает службу .asmx, поэтому я знаю, что это то, где он дует (плюс номер строки в вышеприведенной ошибке).
У меня есть следующие в моем web.config:
<microsoft.web.services3>
<diagnostics>
<trace enabled="true"
input="c:\inetpub\wwwroot\wsetraces\InputTrace.webinfo"
output="c:\inetpub\wwwroot\wsetraces\OutputTrace.webinfo" />
<detailedErrors enabled="true" />
</diagnostics>
</microsoft.web.services3>
и я дал каталог полный доступ к каждому - пока не появится там никаких следов.
Что я могу найти или попробовать, чтобы отладить это?
Теоретически результаты «ping» не должны иметь значения, поскольку веб-сайт работает из программы формы Windows, которая называет ее просто замечательной.
Тем не менее - вот что показывает Ping и это выглядит немного сомнительна мне:
C: \ Users \ uxnxw01> пинг rct.msbexpress.net
Pinging rct.msbexpress.net [66.77.241.56] with 32 bytes of data:
Reply from 10.193.99.5: Destination net unreachable.
Reply from 10.193.99.5: Destination net unreachable.
Request timed out.
Reply from 10.193.99.5: Destination net unreachable.
Ping statistics for 66.77.241.56:
Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Спасибо,
Нил Walters
анализ WireShark
Я действительно запустил Wireshark - опубликовал некоторые результаты в комментарии ниже. Однако, прочитав его больше, он не всегда говорит «Destination Unreachable». Но в случае, если он терпит неудачу, я никогда не получаю никакой базы данных. Я все еще смущен, что делать дальше. Я сравнивал пакеты, но это медленный и запутанный. Например, я все еще не нашел ключ (конкретный policyNum), который я передаю в пакете запроса. Я также вижу несколько выражений «Недоступные места назначения» в том, что работало.
В том, что работает, я никогда не вижу 66.77.241.76, я вижу только прокси-сервер нашей компании. Но я не вижу ничего в конфиге (или коде), который бы сказал WSE3 использовать или не использовать прокси.
Telnet результаты:
C:\Users\uxnxw01>telnet 66.77.241.56 80
Connecting To 66.77.241.56...Could not open connection to the host, on port 80:
Connect failed
C:\Users\uxnxw01>telnet 66.77.241.76 80
Connecting To 66.77.241.76...Could not open connection to the host, on port 80:
Connect failed
Я не уверен, что это доказывает. Как я уже сказал, я могу определенно называть тот же веб-сервис из формы Windows, напрямую называя его интерфейс WSE3. Я знаю, что я могу туда добраться.
Я думаю, что основные отличия в двух программах заключаются в том, что он работает под формой Win и напрямую вызывает WSE3. Это работает.Тот, который терпит неудачу, в основном составляет 99% того же кода, который опубликован как служба WCF, поэтому он работает под IIS (тогда консольная программа вызывает службу WCF/IIS на моей машине, которая, в свою очередь, вызывает службу WSE3).
Есть ли какая-то причина, по которой IIS не будет использовать один и тот же прокси?
Да, согласно моему третьему варианту в моем ответе. ;-) –
Вы также можете сделать это в web.config ' \t <прокси usesystemdefault = "False" ProxyAddress = "HTTP: //your.proxy.ip"/> DefaultProxy> ' –
Ketan