WCF: & # 8220; Impossibile aprire System.ServiceModel.Channels.ClientReliableDuplexSessionChannel & # 8221;

StackOverflow https://stackoverflow.com/questions/819871

Domanda

Al momento ho un servizio WCF con un contratto CallBack (duplex) e quando uso l'applicazione che lo utilizza sul mio computer tutto funziona bene, ma quando lo provo da un altro computer, non si connette .

Questi problemi hanno iniziato a verificarsi quando sono passato a utilizzare questo wsDualHttpBinding (per i callback) perché quando ho usato wsHttpBinding tutto ha funzionato bene.

Perché il servizio Web non accetta richieste da altri computer? Sono alcune impostazioni di hosting che devono essere modificate?


Per quanto riguarda i registri, sto ottenendo questi:

alt text http://img17.imageshack.us/img17/4628/wcfissue .jpg

  

L'operazione di apertura non è stata completata   entro il timeout assegnato a   00:01:00. Il tempo assegnato a questo   l'operazione potrebbe essere stata una porzione di a   timeout più lungo

     

Impossibile aprire System.ServiceModel.Channels.ClientReliableDuplexSessionChannel

     

Faulted   System.ServiceModel.Channels.ClientReliableDuplexSessionChannel

     

Faulted   System.ServiceModel.Channels.ServiceChannel

     

Impossibile aprire   System.ServiceModel.Channels.ServiceChannel


La porta è aperta sul mio router (sia TCP che UDP) quindi non è questo il problema.

Per quanto riguarda gli attributi di servizio, questo è quello che sto usando:

Interfaccia:

[ServiceContract(Name = "MusicRepo_DBAccess_Service", 
                 CallbackContract = typeof(IOnlineUsersCallback),
                 SessionMode=SessionMode.Required)]

servizio:

[ServiceBehavior(
        ConcurrencyMode=ConcurrencyMode.Reentrant, 
        InstanceContextMode=InstanceContextMode.Single)]

[Aggiornamento]

Per quanto riguarda Orion Edwards ' posta:

  • Nessun firewall
  • Vedi punto 1
  • Sì, perché la porta è inoltrata sul mio router
  • Sto usando IIS per ospitare il server.

Il fatto è che questo problema ha iniziato a verificarsi quando sono passato da wsHttpBinding (che funzionava bene) a wsDualHttpBinding (perché avevo bisogno di callback)


[Aggiornamento]

Ora sono passato da wsDualHttpBinding a NetTcpBinding e per qualche ragione, tutto funziona bene.

Ho usato questo articolo per aiutarmi a configurare l'hosting su IIS e per fortuna tutto funziona come previsto, con richiamate.

È stato utile?

Soluzione

Ora sono passato da wsDualHttpBinding a NetTcpBinding e per qualche ragione, tutto funziona bene.

Ho usato questo articolo per aiutarmi a configurare l'hosting su IIS e per fortuna tutto funziona come previsto, con richiamate.

Altri suggerimenti

Sarebbe utile se le impostazioni di configurazione del server e del client fossero state pubblicate.

Ecco un riepilogo del funzionamento di wsDualHttpBinding da MSDN ( enfatizzare il mio):

  

WSDualHttpBinding fornisce il   stesso supporto per i protocolli del servizio Web   come WSHttpBinding, ma per l'uso con   contratti duplex. WSDualHttpBinding   supporta solo la sicurezza SOAP e   richiede messaggistica affidabile. Questo   l'associazione richiede che il client abbia un   URI pubblico che fornisce un callback   endpoint per il servizio. Questo è   fornito da clientBaseAddress   attributo. Una doppia associazione espone il   Indirizzo IP del client al   servizio. Il client dovrebbe usare   sicurezza per garantire che solo   si collega ai servizi di cui si fida.

     

Questa associazione può essere utilizzata per   comunicare in modo affidabile attraverso uno o   più intermediari SOAP.

     

Per impostazione predefinita, questa associazione genera a   stack di runtime con   WS-ReliableMessaging per affidabilità,   WS-Security per la sicurezza dei messaggi e   autenticazione, HTTP per messaggio   consegna e un messaggio di testo / XML   codifica.

Cose da controllare:

  • Windows Firewall
  • Il firewall del prodotto antivirus
  • Puoi telnet nella porta da una macchina remota?
  • Il tuo " server " in esecuzione sotto il server di sviluppo ASP.NET? Ciò accetterà solo richieste da host locali: è necessario ospitare autonomamente il server utilizzando ServiceHost o ospitarlo in IIS.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top