Sintomi
Si consideri lo scenario seguente:
-
Eseguire un servizio Windows Communication Foundation (WCF) basato su.NET Framework 3.5 o.NET Framework 3.0 di Microsoft.
-
Il servizio WCF utilizza il servizio (Smsvchost.exe) ed è ospitato in un computer che esegue Internet Information Services (IIS).
-
Una delle seguenti condizioni è vera:
-
L'utilizzo della CPU è elevato sul computer che esegue IIS.
-
Si verifica una limitazione di un modello di servizio per il servizio WCF.
-
Allo stesso tempo, più richieste vengono inviate al servizio WCF.
-
In questo scenario, il servizio WCF richiede più di un minuto per elaborare una richiesta da un'applicazione client. Inoltre, un messaggio di errore che assembla la seguente voce di evento viene registrato nel registro eventi:
Nome registro: sistema
Origine: SMSvcHost 3.0.0.0
Data:
ID evento: 8
Categoria di attività: Servizio di condivisione
Livello: errore
Parole chiave: classico
Utente: Servizio locale
Computer:
Descrizione: Errore durante l'invio di un socket duplicato: questo handle viene ora perso nel processo.
ID: 2620
Origine: System.ServiceModel.Activation.TcpWorkerProcess
Eccezione:
TimeoutException: L'operazione di richiesta inviato non ha ricevuto una risposta entro il timeout configurato (00: 01:00). L'assegnato a questa operazione è stata una parte di un timeout più lungo. È possibile perché il servizio è in corso l'elaborazione dell'operazione o il servizio non è riuscito a inviare un messaggio di risposta. È consigliabile aumentare il timeout dell'operazione (per il cast del canale/proxy su IContextChannel e impostando la proprietà OperationTimeout) e assicurarsi che il servizio è in grado di connettersi al client.
Nota: È necessario riavviare IIS per ripristinare il servizio WCF da questo problema.
Causa
Questo problema si verifica perché il processo di Smsvchost.exe scade dopo un minuto, quando tenta di trasferire una richiesta di connessione in ingresso al processo di lavoro W3wp.exe. Inoltre, questo valore di timeout è non configurabili.
Quando la CPU ha un carico di lavoro pesante oppure quando molte richieste di connessione in ingresso, il processo Smsvchost.exe non può trasferire la connessione in ingresso al processo di lavoro W3wp.exe entro un minuto. Pertanto, il processo di Smsvchost.exe va in timeout e infine si blocca. Quando si verifica questo problema, il processo Smsvchost.exe non può inviare le richieste successive al processo di lavoro W3wp.exe, è necessario riavviare IIS.
Risoluzione
Per risolvere questo problema, applicare l'hotfix 2504602 descritto nell'articolo della Microsoft Knowledge Base (KB).
Per ulteriori informazioni, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
2504602 un pacchetto cumulativo di hotfix è disponibile per WCF in.NET Framework 3.0 SP2, in.NET Framework 3.5 SP1 e in.NET Framework 4
Stato
Microsoft ha confermato che questo è un problema dei prodotti Microsoft elencati nella sezione "Si applica a".