2009-08-27 19 views
9

Ho un problema di timeout in WCF.Problema di timeout in WCF

Quello che segue è l'errore:

{ "Il canale richiesta è scaduta durante l'attesa per una risposta dopo 00: 00:. 59,9,843744 millions Aumentare il valore di timeout passato alla chiamata di richiesta o aumentare il valore SendTimeout su la rilegatura. il tempo a disposizione per questa operazione potrebbe essere stato una parte di un timeout più lungo. "}

Dopo la ricerca in google, ho trovato la soluzione

da questo sito

http://social.msdn.microsoft.com/Forums/en-US/peertopeer/thread/38306972-3128-4f0c-937b-5d162d4d8e74

Così ho cambiato di conseguenza il mio file app.config

<behavior name="ContactServiceBehaviour"> 
    <serviceMetadata httpGetEnabled="true" /> 
    <dataContractSerializer maxItemsInObjectGraph="1000000000"/> 
    <serviceDebug includeExceptionDetailInFaults="true" /> 
    <serviceThrottling maxConcurrentCalls="100" 
         maxConcurrentSessions="100" 
         maxConcurrentInstances="100"/> 
</behavior> 

Qual è la soluzione?

+1

Ciao, non hai dato molto da fare qui. stai ospitando il servizio? o stai usando un client WCF? –

risposta

18

Il post sul forum che hai menzionato è un'aringa rossa. Il messaggio di errore indica chiaramente che è necessario aumentare la proprietà di timeout nel client e nel servizio WCF. (se lo modifichi nel servizio, ho riscontrato che non viene sempre rilevato dal client quando viene aggiornato)

In Visual Studio vai al menu Strumenti, lì troverai l'Editor di configurazione del servizio WCF '. Carica i tuoi progetti web.config e definisci un nuovo Binding per il tuo servizio.

L'impostazione da modificare è il valore SendTimeout. Di default è 60 secondi.

<system.serviceModel> 
<bindings> 
    <basicHttpBinding> 
    <binding name="WCFBinding" sendTimeout="00:02:00"> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
+1

Sembra che tu sia abbastanza nuovo in WCF. http://msdn.microsoft.com/en-us/library/ms731067.aspx per alcuni fantastici tutorial –

+1

Gli errori di timeout non vengono quasi mai risolti aumentando il timeout. Generalmente sono causati dal fatto che il client non è in grado di connettersi al server. Il timeout esiste solo per non aspettare ore o giorni prima di mollare. –

+1

se il client è in attesa di un'attività in esecuzione prolungata, 60 secondi non sono particolarmente lunghi. e molto probabilmente la soluzione più semplice. –

0

Se si desidera gestire il timeout, è possibile racchiudere la chiamata lato client del servizio WCF in un blocco try/catch.

C'è un trucco qui, se non hai un debugger collegato, un timeout causerà l'esecuzione del blocco catch. Tuttavia, se si dispone di un debugger collegato, il debugger intercetta l'errore prima che raggiunga il blocco catch.

Problemi correlati