.net - servizio - wcf windows service




Timeout servizio Windows WCF (6)

Controlla questo, per un tipo simile di errore devi impostare la proprietà OperationTine su http://www.codeproject.com/KB/WCF/WCF_Operation_Timeout_.aspx

Ho una applicazione client sviluppata in .net sedendo una richiesta al servizio wcf e supponevo di inviare una risposta. Se il tempo di esecuzione è di 1 minuto, non c'è errore, se supera 1 minuto l'errore è

Eccezione interna: questa operazione di richiesta inviata a net.tcp: // localhost: 18001 / PitToPort / 2008/01/30 / StockpileService / tcp non ha ricevuto una risposta entro il timeout configurato (00:01:00).
Il tempo assegnato a questa operazione potrebbe essere stato una parte di un timeout più lungo. Ciò potrebbe essere dovuto al fatto che il servizio sta ancora elaborando l'operazione o perché il servizio non è stato in grado di inviare un messaggio di risposta. Considerare di aumentare il timeout dell'operazione (eseguendo il cast del canale / del proxy su IContextChannel e impostando la proprietà OperationTimeout) e assicurarsi che il servizio sia in grado di connettersi al client

Come aumentare il time out e come? Qual è la soluzione migliore?


Ecco una soluzione molto più semplice ... basta impostare la proprietà direttamente sul ClientBase corrente. In altre parole, aggiungere prima un riferimento al servizio, inizializzarlo, quindi impostare la proprietà "InnerChannel.OperationTimeout"

NetUtilsWCF.SMTPDiagClient sClient = new NetUtilsWCF.SMTPDiagClient ();

sClient.InnerChannel.OperationTimeout = new TimeSpan (0, 5, 0);


Ho aggiunto il seguente codice al codice dell'app del servizio

system.transactions  
    defaultSettings timeout="00:30:00" 

con questo codice il servizio attenderà 30 minuti per ottenere il processo eseguito nel server di database e aumentare il

maxBufferSize="2147483647"  
maxReceivedMessageSize="2147483647"  
maxBufferPoolSize="2147483647" 

negli attributi di associazione client, quindi funziona correttamente.

Problema: il servizio sta inviando una risposta ma il buffer del client è stato meno precedente, ho aumentato la dimensione massima del buffer.


Ho avuto la stessa eccezione quando uso callback. Funziona nel test locale (il client e il programma di servizio sono in esecuzione nello stesso computer) ma non funziona nell'ambiente utente (il programma di servizio viene eseguito in winserver 2008). Il codice del server è stato eseguito in base al log.Penso che sia dovuto a problemi di ambiente o autorità ma non ho idea di come gestirlo.


Il timeout è chiamato "sendTimeout" e puoi configurarlo sulla tua sezione di bind nel tuo file di configurazione, o in codice - a tua scelta.

config:

  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding sendTimeout="00:03:00" />
      </netTcpBinding>
    </bindings>

Questo imposterà il timeout a 3 minuti.

Marc


Se si conosce il motivo per cui il server impiega più di un minuto per rispondere al client, è necessario estendere OperationTimeout del canale (come indicato nel messaggio di errore).

Dai un'occhiata a questo, incluso un esempio di codice alla fine: http://final-proj.blogspot.com/2009/09/wcf-timeouts.html

In bocca al lupo.







exception-handling