WCF: & # 8220; Impossibile aprire System.ServiceModel.Channels.ClientReliableDuplexSessionChannel & # 8221;
-
03-07-2019 - |
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.
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.