Rinnovare di nuovo la quantità perché ho davvero bisogno di sapere come farlo funzionare o una risposta definitiva sul perché non lo farà.Ricerca WCF Duplex "TwoWay" Iscriviti + Callback Esempio
I've added an alternative explanation of the problem here.
Avere un sacco di tempo ottenere un doppio senso client-server WCF (IsOneWay = false) di lavorare in .Net 3/3.5.
Dopo che il client si è registrato con successo con il servizio, il servizio di periodico Annuncio() richiama i client registrati. È ora che il client o il server si blocca fino a quando il SendTimeout del server, regolato su 2 secondi, scade. Quindi il lato server ha un'eccezione di timeout come segue. Solo allora il codice utente del client riceve immediatamente la RICHIESTA METODO e tenta di restituire un valore. A quel punto il socket del client viene interrotto e la roba WCF fallisce.
Mi sembra che qualcosa sul client stia sospendendo la sua coda WCF locale dall'elaborazione fino a quando il socket scade, ma non abbastanza presto da annullare la chiamata al metodo locale. Ma se l'eccezione sotto è da credere, il server sta tentando di inviare un'operazione a http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous (inappropriata!) E sta scadendo. Forse quell'URI è solo il "Nome" del client connesso in remoto poiché WCF sa di farvi riferimento per gli scopi del messaggio di errore e sembra solo indicare che non sta caricando un URI. Non riesco a capire se il server fallisce per primo o se il client fallisce per primo.
Ho provato ad aggiungere traccia WCF ma non ho molte più informazioni.
Similar sample code is here, ma deve essere stato troppo da digerire. Ho sperimentato le varazioni di quel codice.
TimeoutException 'This request operation sent to http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous did not receive a reply within the configured timeout (00:00:00). The time allotted to this operation may have been a portion of a longer timeout. This may be because the service is still processing the operation or because the service was unable to send a reply message. Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service is able to connect to the client.'
Server stack trace:
at System.ServiceModel.Dispatcher.DuplexChannelBinder.SyncDuplexRequest.WaitForReply(TimeSpan timeout)
at System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(Message message, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Questo è per 3.0/3.5, non 4.0. Grazie. –
hai usato il trace wcf sia sul client che sul server per vedere se mostra qualcosa? –
Sì, come meglio posso interpretare i risultati, trovo solo la stessa eccezione di cui sopra. Tutti gli ordini e i messaggi appaiono corretti in caso contrario. –