Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I servizi self-hosted che utilizzano il trasporto Net.TCP possono controllare diverse impostazioni avanzate, ad esempio ListenBacklog e MaxPendingAccepts, che regolano il comportamento del socket TCP sottostante utilizzato per la comunicazione di rete. Tuttavia, queste impostazioni per ogni socket si applicano solo a livello di binding se l'binding di trasporto ha disabilitato la condivisione delle porte, che è abilitata per impostazione predefinita.
Quando un'associazione net.tcp abilita la condivisione delle porte (impostando portSharingEnabled =true l'elemento di associazione di trasporto), consente implicitamente a un processo esterno (ovvero il SMSvcHost.exeche ospita il servizio di condivisione porte Net.TCP) di gestire il socket TCP per suo conto. Ad esempio, quando si utilizza TCP, specificare:
<tcpTransport portSharingEnabled="true" />
Se configurate in questo modo, tutte le impostazioni socket specificate nell'elemento di associazione di trasporto del servizio vengono ignorate a favore delle impostazioni socket specificate da SMSvcHost.exe.
Per configurare il SMSvcHost.exe, creare un file di configurazione XML denominato SmSvcHost.exe.config e inserirlo nella stessa directory fisica dell'eseguibile SMSvcHost.exe (ad esempio, C:\Windows\Microsoft.NET\Framework\v4.5).
Nell'esempio seguente viene illustrato un esempio di SMSvcHost.exe.config, con le impostazioni predefinite per tutti i valori configurabili dichiarate in modo esplicito.
<configuration>
<system.serviceModel.activation>
<net.tcp listenBacklog="16" <!-- 16 * # of processors -->
maxPendingAccepts="4"<!-- 4 * # of processors -->
maxPendingConnections="100"
receiveTimeout="00:00:30" <!-- 30 seconds -->
teredoEnabled="false">
<allowAccounts>
<!-- LocalSystem account -->
<add securityIdentifier="S-1-5-18"/>
<!-- LocalService account -->
<add securityIdentifier="S-1-5-19"/>
<!-- Administrators account -->
<add securityIdentifier="S-1-5-20"/>
<!-- Network Service account -->
<add securityIdentifier="S-1-5-32-544" />
<!-- IIS_IUSRS account (Vista only) -->
<add securityIdentifier="S-1-5-32-568"/>
</allowAccounts>
</net.tcp>
</system.serviceModel.activation>
</configuration>
Quando modificare SMSvcHost.exe.config
In generale, è necessario prestare attenzione quando si modifica il contenuto del file di SMSvcHost.exe.config, poiché le impostazioni di configurazione specificate in questo file influiscono su tutti i servizi di un computer che utilizza il servizio di condivisione porte Net.TCP. Sono incluse le applicazioni in Windows Vista che utilizzano le funzionalità di attivazione TCP del servizio Attivazione processo Windows (WAS).
Tuttavia, a volte potrebbe essere necessario modificare la configurazione predefinita per il servizio di condivisione porte Net.TCP. Ad esempio, il valore predefinito per maxPendingAccepts è 4 * numero di processori. I server che ospitano un numero elevato di servizi che utilizzano la condivisione delle porte possono aumentare questo valore per ottenere la massima velocità effettiva. Il valore predefinito è maxPendingConnections 100. È consigliabile aumentare questo valore anche se sono presenti più client simultanei che chiamano il servizio e il servizio sta interrompendo le connessioni client.
SMSvcHost.exe.config contiene anche informazioni sulle identità dei processi che possono utilizzare il servizio di condivisione delle porte. Quando un processo si connette al servizio di condivisione delle porte per utilizzare una porta TCP condivisa, l'identità del processo di connessione viene confrontata con un elenco di identità autorizzate a utilizzare il servizio di condivisione delle porte. Queste identità vengono specificate come identificatori di sicurezza (SID) nella <sezione allowAccounts> del file SMSvcHost.exe.config. Per impostazione predefinita, l'autorizzazione per l'utilizzo del servizio di condivisione delle porte viene concessa agli account di sistema (LocalService, LocalSystem e NetworkService) e ai membri del gruppo Administrators. Le applicazioni che consentono a un processo in esecuzione con un'altra identità, ad esempio un'identità utente, di connettersi al servizio di condivisione delle porte devono aggiungere in modo esplicito il SID appropriato al SMSvcHost.exe.config (queste modifiche non vengono applicate fino al riavvio del processo SMSvc.exe).
Annotazioni
Nei sistemi Windows Vista con il controllo dell'account utente abilitato, gli utenti locali richiedono autorizzazioni elevate anche se il loro account è membro del gruppo Administrators. Per consentire a questi utenti di utilizzare il servizio di condivisione delle porte senza elevazione dei privilegi, il SID dell'utente (o il SID di un gruppo di cui l'utente è membro) deve essere aggiunto in modo esplicito alla <sezione allowAccounts> di SMSvcHost.exe.config.
Avvertimento
Il file SMSvcHost.exe.config predefinito specifica un'opzione personalizzata etwProviderId per evitare che la traccia SMSvcHost.exe interferisca con le tracce del servizio.