64 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.
64 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 | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
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
64 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
64 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.