59 messaggi dal 08 giugno 2010
Salve a tutti,
ho una comunicazione tra un client wpf e un service wcf solo che dopo un tot di tempo il service chiude la connessione; di conseguenza quando vado a fare una chiamata per farmi restituire dei dati, il tutto va in catch!


Grazie mille per l'attenzione.
59 messaggi dal 08 giugno 2010
AIIIUUUTTOOOO....please
ILFRENZ wrote:
ho una comunicazione tra un client wpf e un service wcf solo che dopo un tot di tempo il service chiude la connessione; di conseguenza quando vado a fare una chiamata per farmi restituire dei dati, il tutto va in catch!

quando lavori con servizi WCF, la best practice è quella di verificare che il canale sia attivo prima di inviare i comandi. lo puoi fare facilmente con un piccolo proxy da cui passare. occhio a verificare che il canale non sia in fault. in questo caso, infatti, occorre gestire opportunamente la creazione di un nuovo canale.
.

Daniele Bochicchio | ASPItalia.com
I libri su Windows, HTML5, ASP.NET, VS, Entity Framework
Chief Digital Officer@icubed
Microsoft Regional Director for Italy
Aggiungo inoltre che in WCF vi sono molteplici timeout che si possono configurare. Sul binding hai openTimeout, closeTimeout, receiveTimeout (questo può essere la causa del tuo problema), sendTimeout.
Se è un servizio duplex c'è anche inactivityTimeout

Ciao

Il mio blog
Homepage
59 messaggi dal 08 giugno 2010
Grazie mille per le vostre risposte

Scusatemi, ma non mi è molto chiaro,
normalmente io per chiamare funzioni che mi restituiscono dati al client faccio in questo modo:
using (WCF_Service.Service1Client i = new Service1Client())
{
i.get...
i.Update..
}

il tutto funziona tutto perfettamente fino ad un tot di tempo..
potrebbe essere il timeout del binding, potrebbe essere iis che mi ha chiuso la connessione,
però non riesco a capire quando eseguo la chiamata, se la connessione è aperta o chiusa...
Come faccio a capirlo se "i.State" mi risulta sempre in stato Aperto?dove lo capisco che la sessione è scaduta?
Dalla tua domanda sembrava che usassi sempre lo stesso canale, invece lo apri, consumi e lo chiudi quando non ti serve, giusto?
In questo caso non dovrebbero esserci problemi di timeout. A questo punto l'eccezione che ti dà cos'è?

Ciao

Il mio blog
Homepage
59 messaggi dal 08 giugno 2010
esattamente, lo apro, lo consumo, e lo chiudo.

effettivamente ho sbagliato; non mi va in catch ma se ad esempio faccio una get() al service, non ottengo alcun dato; questo sempre dopo tot tempo.

poi mi andava in catch perchè la finestra non aveva dati, scusatemi e grazie per il vostro aiuto.
Quindi non avviene nessun errore? Neanche in asincrono? Come fai la chiamata per ottenere i dati? (è qui che devi controllare se va in errore). Con "non ottengo alcun dato" intendi che la risposta è nulla, la lista è vuota, o non va avanti con le istruzioni successive?

Ciao

Il mio blog
Homepage

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.