Condividi tramite


Errore quando il servizio Windows Communication Foundation usa l'attivazione net.tcp

Questo articolo illustra come risolvere l'errore che si verifica quando il servizio Windows Communication Foundation usa l'attivazione net.tcp.

Versione originale del prodotto: .NET Framework, Windows Communication Foundation
Numero KB originale: 2026177

Sintomi

Si consideri lo scenario seguente in Microsoft .NET Framework:

  • Si esegue un servizio Windows Communication Foundation (WCF) con l'attivazione net.tcp.

  • Se il servizio richiede più di un minuto per elaborare una richiesta da un'applicazione client, viene registrato l'errore seguente:

    Nome registro: sistema
    Origine: SMSvcHost 3.0.0.0
    Data:
    ID evento: 8
    Categoria attività: Servizio di condivisione
    Livello: errore
    Parole chiave: utente classico: computer DEL SERVIZIO LOCALE: Descrizione: Si è verificato un errore durante l'invio di un socket duplicato: questo handle viene ora trapelato nel processo. ID: 2620 Origine: System.ServiceModel.Activation.TcpWorkerProcess/33156464 Eccezione: System.TimeoutException: questa operazione di richiesta inviata a non ha ricevuto una risposta entro il timeout configurato (00:01:00). È possibile che la durata consentita per l'operazione fosse una porzione di un timeout più lungo. È possibile che il servizio stia ancora elaborando l'operazione o che il servizio non sia stato in grado di inviare un messaggio di risposta. Prendere in considerazione l'aumento del timeout dell'operazione (eseguendo il cast del canale/proxy a IContextChannel e impostando la proprietà OperationTimeout) e assicurarsi che il servizio sia in grado di connettersi al client.

Causa

Questo problema si verifica perché il processo di SmSvcHost.exe condivisione delle porte Net.TCP si verifica dopo un minuto dal processo di condivisione delle porte Net.TCP. Il valore di timeout interno è di un minuto. Quando viene inviata una richiesta al servizio, il processo di SmSvcHost.exe crea un'associazione pipe per registrare nuovi canali per comunicare con il processo W3wp.exe di Internet Information Services (IIS). Il processo richiede un minuto per creare l'associazione pipe. Di conseguenza, si verifica il timeout del processo. Il timeout può risultare da una di queste condizioni:

  • CPU elevata: la CPU è quasi completa per un lungo periodo di tempo. Di conseguenza, il servizio di destinazione non è in grado di elaborare le richieste in modo sufficientemente rapido.

  • Limitazione dei servizi: il servizio sta raggiungendo una limitazione all'interno del modello di servizio.

  • L'inizializzazione del servizio richiede più di 1 minuto.

Risoluzione

  • CPU elevata: la CPU è quasi completa per un lungo periodo di tempo. Di conseguenza, il servizio di destinazione non è in grado di elaborare le richieste in modo sufficientemente rapido.
    Soluzione: è necessario modificare il codice o aggiungere risorse per impedire la condizione elevata della CPU.

  • Limitazione dei servizi: il servizio sta raggiungendo una limitazione all'interno del modello di servizio.
    Risoluzione: attivare tracce di avviso/errore per il servizio di destinazione per identificare il problema. Se la soluzione ha più sessioni attive o più chiamate simultanee, modificare per MaxConcurrentSessions or MaxConcurrentCalls ridurre il carico.

  • L'inizializzazione del servizio richiede più di 1 minuto.
    Soluzione: monitorare le tracce per verificare se l'inizializzazione dell'applicazione di servizio richiede più di un minuto. Verificare se è possibile modificare la logica di inizializzazione per ridurre questo tempo o usare la funzionalità Avvio automatico per inizializzare il servizio prima della prima chiamata client.

Ulteriori informazioni