Frage

Ich bin in der Lage ganz gut ein 3rd-Party-Anbieter Web-Dienst von einem Windows-Formular-Programm aufrufen. Wenn ich versuche, den gleichen Web-Service und Web-Methode und die gleiche URL von einem WCF-Web-Service rufen ich die folgende Fehlermeldung erhalten:

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

Ich versuche, im Grunde einen WCF-Wrapper für den Verkäufer .asmx / WSE3 Service zu schreiben. Lassen Sie sich nicht Punkt aus - aber Microsoft sagt WCF WSE3 nennen kann, aber nur mit SSL eingeschaltet, und mein Anbieter - es glaubt oder nicht - ist nicht SSL-Verbindung ermöglicht. So I'mn Schreiben der Wrapper stecken, damit ich von BizTalk 2009. Im Moment anrufen, ich bin über ein Konsolenprogramm die Wrapper zu testen.

Was kann ich tun, auch zu debuggen? Ich habe hinzugefügt EventLog Spuren vor und nach dem WCF-Dienst, wo es den .asmx Dienst ruft - so weiß ich, das ist, wo es weht (plus die Zeilennummer in dem Fehler oben).

Ich habe folgende in meinem 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>

, und ich habe das Verzeichnis Vollzugriff auf alle gegeben - noch keine Spur erscheint dort.

Was sind einige Dinge, die ich für die nächste aussehen kann oder versuchen, dies zu debuggen?

In der Theorie „ping“ Ergebnisse sollten Materie nicht, weil die Website aus dem Windows-Formular-Programm arbeitet, dass Anrufe es einfach gut.

Dennoch - hier ist das, was Ping-Shows und es sieht ein wenig fragwürdig zu mir:

C: \ Users \ uxnxw01> ping 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),

Danke,

Neal Walters


Wireshark Analyse

Ich habe Wireshark laufen - einige Ergebnisse in Kommentar unten geschrieben. Doch nachdem es mehr zu lesen, ist es nicht immer sagen: „Ziel nicht erreichbar“. Aber in dem Fall, wo es versagt, bekomme ich nie data. Ich bin immer noch verwirrt, was als nächstes zu tun ist. Ich habe Pakete wurden zu vergleichen, aber es ist langsam und verwirrend. Zum Beispiel habe ich noch nicht gefunden, den Schlüssel (ein spezifisches policyNum), dass ich in dem Anforderungspaket bin vorbei. Ich sehe auch ein paar „Ziel nicht erreichbar“ Aussagen in dem einen, das funktionierte.

In dem eines, das funktioniert, habe ich nie 66.77.241.76 sehen, ich nur unser Unternehmen Proxy sehen. Aber ich kann nicht alles in der config (oder Code) sehen, die WSE3 zu verwenden sagen würde, oder nicht den Proxy verwenden.


Telnet Ergebnisse:

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

Ich bin nicht sicher, was das beweist. Wie ich schon sagte, kann rufe ich auf jeden Fall die gleiche Webservice aus einem Formular Windows, indem direkt seine WSE3 Schnittstelle aufrufen. Ich weiß, dass ich auf diese Weise dorthin gelangen kann.

Ich bin in den beiden Programmen die wichtigsten Unterschiede zu denken ist, dass man unter einer Win Form läuft und ruft WSE3 direkt. Dass man Werke. Die eine, die nicht grundsätzlich 99% gleicher Code, als WCF-Dienst veröffentlicht, so dass es unter IIS ausgeführt wird (dann ein Konsolenprogramm ruft auf meinem Rechner die WCF / IIS-Dienst, der abwechselnd ruft den WSE3 Dienst).

Gibt es einen Grund IIS würde den gleichen Proxy nicht verwenden?

War es hilfreich?

Lösung

Danke an alle die Hilfe oben - aber hier ist die wirkliche Antwort:

valservice.Proxy = new System.Net.WebProxy ( " http: //10.192.xx.xx: 8080 “, true);

Der WCF-Dienst unter IIS ausgeführt wurde offenbar nicht das gleiche Proxy verwenden, so dass ich es manuell im Code. Ich werde eine andere Frage posten, um zu sehen, ob es einen Weg gibt, diese Datei in Config zu tun.

Andere Tipps

Wir empfehlen Ihnen, Wireshark zu sehen, was mit dem Netzwerkverkehr geht.

Ping-Anfragen (ICMP-Pakete) an der Firewall deaktiviert werden. So ist es durchaus möglich ist keine Ping-Antwort zurück zu bekommen, während in der Lage, die Box auf verschiedene Ports zugreifen zu können.

Versuchen und Verwendung telnet zu 66.77.241.56 auf Port 80 und sehen Sie zu verbinden, wenn Sie eine Antwort erhalten.

telnet 66.77.241.56 80

Alternativ kann ein tracerte an die IP-Adresse für einen Ihrer Netzwerk-Administratoren einige detailliertere Informationen liefern, wie es ebenso mit Netzwerk-Routing oder NAT.

zu tun haben könnte

dritte Möglichkeit ist, dass man sich ausdrücklich Proxy Eigentum auf Ihrer SoapHttpClientProtocol SOAP-Client-Instanz festgelegt muß möglicherweise. WinForms holt dies automatisch, sondern von einem Web-Service / app ist dies nicht der Fall ist.

Sehen Sie meine Kommentare auf Beiträge von anderen, auch, aber darüber hinaus in Bezug auf Ihre Diagnoseprotokoll, das ist das XML, dass ich in meiner Config habe einen WCF-Trace-Protokoll-Dump:

<configuration>

    <system.diagnostics>
        <sources>
            <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
                <listeners>
                    <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData= "MyService.svclog" />
                </listeners>
            </source>
        </sources>
    </system.diagnostics>

</configuration>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top