Domanda

Io sono in grado di chiamare un 3 ° parte del fornitore del servizio web da Windows form, in programma proprio bene.Quando provo a chiamare lo stesso servizio web e web, il metodo e la stessa URL da un WCF web service ottengo il seguente errore:

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

Praticamente sto cercando di scrivere un WCF wrapper per il venditore .asmx/WSE3 servizio.Cerchiamo di non andare off - ma Microsoft dice WCF può chiamare WSE3, ma solo con SSL attivato, e il mio fornitore - credeteci o no - non consente la connessione SSL.Così ho'mn bloccato a scrivere il wrapper in modo che posso chiamare da BizTalk 2009.Proprio ora, sto testando il wrapper tramite un programma di Console.

Cosa posso ancora fare per eseguire il debug?Ho aggiunto EventLog tracce prima e dopo il servizio WCF in cui si chiama .servizio asmx - io so di dove soffia un vento (più il numero di riga il messaggio di errore di cui sopra).

Ho il seguente nel mio 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>

e io ho dato la directory con accesso completo a tutti - ancora nessuna traccia viene visualizzata.

Quali sono alcune delle cose che posso cercare o provare a eseguire il debug di questo?

In teoria il "ping" di risultati non importa, perché il sito funziona da Windows form programma che si chiama proprio bene.

Tuttavia - ecco cosa Ping mostra e sembra un po ' discutibile per me:

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),

Grazie,

Neal Walters


WireShark analisi

Ho fatto eseguire Wireshark - pubblicato alcuni risultati di commento qui sotto.Tuttavia, dopo la lettura di più, non dico sempre "Destination Unreachable".Ma nel caso in cui essa non riesce, non ho mai ottenere qualsiasi databack.Sono ancora confuso su cosa fare.Ho messo a confronto i pacchetti, ma è lento e confuso.Per esempio, non ho ancora trovato la chiave (una specifica policyNum) che sto passando il pacchetto di richiesta.Ho anche vedere un paio di "Destination Unreachable" dichiarazioni a uno che ha lavorato.

In quella che funziona, non vedo mai 66.77.241.76, ho solo fatto che la nostra società proxy.Ma io non riesco a vedere qualcosa nella config (o codice) di raccontare WSE3 di utilizzare o non utilizzare il proxy.


Telnet risultati:

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

Io non sono sicuro di cosa dimostra.Come ho detto, sicuramente posso chiamare lo stesso webservice da un Windows form chiamando direttamente la sua WSE3 interfaccia.So che posso arrivare in quel modo.

Sto pensando che le principali differenze tra i due programmi è che uno è in esecuzione con una Vittoria Modulo di chiamata, e WSE3 direttamente.Che uno funziona.Quello che non è, fondamentalmente, il 99% lo stesso codice, pubblicato come un servizio WCF, quindi è in esecuzione in IIS (quindi un programma di console chiama il WCF/IIS service sulla mia macchina, che a sua volta chiama il WSE3 servizio).

C'è qualche motivo di IIS non utilizzare lo stesso proxy?

È stato utile?

Soluzione

Grazie per tutto l'aiuto di cui sopra, ma qui è la vera risposta:

valservice.Proxy = nuovo Sistema.Net.WebProxy("http://10.192.xx.xx:8080", true);

Il servizio WCF in esecuzione in IIS è stato a quanto pare NON si utilizza lo stesso proxy, quindi ho impostato manualmente il codice.Vi posto un'altra domanda per vedere se c'è un modo per fare questo nel file di configurazione.

Altri suggerimenti

Si potrebbe desiderare di utilizzare Wireshark per vedere cosa sta succedendo con il traffico di rete.

Le richieste di Ping (ICMP) potrebbe essere disattivato il firewall.Quindi è perfettamente possibile per non ottenere una risposta al ping indietro, pur essendo in grado di accedere al box su porte diverse.

Provare a utilizzare telnet per la connessione a 66.77.241.56 sulla porta 80 e vedere se si ottiene una risposta.

telnet 66.77.241.56 80

In alternativa, un tracerte a detto indirizzo IP può fornire alcune informazioni più dettagliate per uno dei vostri amministratori di rete, come si potrebbe allo stesso modo, hanno a che fare con il routing di rete o NAT.

Terza possibilità è che potrebbe essere necessario impostare esplicitamente la Proxy proprietà SoapHttpClientProtocol SAPONE istanza del client.WinForms di prendere questo in su automaticamente, ma da un servizio web/app non è questo il caso.

A vedere i miei commenti post di altre persone, ma in aggiunta, relative al vostro registro di diagnostica, questo è il file XML che ho nel mio config di dump di un WCF registro di traccia:

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top