Configurazione del servizio di condivisione delle porte Net.TCPConfiguring the Net.TCP Port Sharing Service

I servizi indipendenti che usano il trasporto Net.TCP possono controllare diverse impostazioni avanzate, quali esempio ListenBacklog e MaxPendingAccepts, che regolano il comportamento del socket TCP sottostante usato per la comunicazione di rete.Self-hosted services that use the Net.TCP transport can control several advanced settings, such as ListenBacklog and MaxPendingAccepts, which govern the behavior of the underlying TCP socket used for network communication. Tuttavia, queste impostazioni per ogni socket si applicano solo al livello di associazione, se l'associazione del trasporto ha disattivato la condivisione delle porte, che è attivata per impostazione predefinita.However, these settings for each socket only apply at the binding level if the transport binding has disabled port sharing, which is enabled by default.

Quando un'associazione net.tcp attiva la condivisione delle porte, impostando portSharingEnabled =true sull'elemento di associazione del trasporto, consente implicitamente a un processo esterno, ovvero SMSvcHost.exe, che ospita il servizio di condivisione delle porte Net.TCP, di gestire il socket TCP per suo conto.When a net.tcp binding enables port sharing (by setting portSharingEnabled =true on the transport binding element), it implicitly allows an external process (namely the SMSvcHost.exe, which hosts the Net.TCP Port Sharing Service) to manage the TCP socket on its behalf. Ad esempio, quando si usa TCP, specificare:For example, when using TCP, specify:

    <tcpTransport   
        portSharingEnabled="true"  
/>  

Se configurate in questo modo, le impostazioni socket specificate sull'elemento di associazione del trasporto del servizio vengono ignorate a vantaggio delle impostazioni socket specificate da SMSvcHost.exe.When configured in this way, any socket settings specified on the service's transport binding element are ignored in favor of the socket settings specified by SMSvcHost.exe.

Per configurare SMSvcHost.exe, creare un file di configurazione XML denominato SmSvcHost.exe.config e posizionarlo nella stessa directory fisica dell'eseguibile SMSvcHost.exe, ad esempio C:\Windows\Microsoft.NET\Framework\v4.5.To configure the SMSvcHost.exe, create an XML configuration file named SmSvcHost.exe.config and place it in the same physical directory as the SMSvcHost.exe executable (for example, C:\Windows\Microsoft.NET\Framework\v4.5).

Di seguito viene illustrato un file SMSvcHost.exe.config di esempio, con le impostazioni predefinite per tutti i valori configurabili dichiarate in modo esplicito.The following example illustrates a sample SMSvcHost.exe.config, with the default settings for all configurable values stated explicitly.

<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>  
</configuration>  

Quando modificare SMSvcHost.exe.configWhen to Modify SMSvcHost.exe.config

In generale, quando si modifica il contenuto del file SMSvcHost.exe.config è necessario fare attenzione, poiché qualsiasi impostazione di configurazione in esso specificata influenza tutti i servizi presenti in un computer che usa il servizio di condivisione delle porte Net.TCP.In general, care should be taken when modifying the contents of the SMSvcHost.exe.config file, because any configuration settings specified in this file affect all of the services on a computer that uses the Net.TCP Port Sharing Service. Sono incluse le applicazioni su Windows VistaWindows Vista che usano le funzionalità di attivazione TCP del servizio di attivazione dei processi di Windows (WAS).This includes applications on Windows VistaWindows Vista that use the TCP Activation features of the Windows Process Activation Service (WAS).

Talvolta può però essere necessario modificare la configurazione predefinita del servizio di condivisione delle porte Net.TCP.However, sometimes you may need to change the default configuration for the Net.TCP Port Sharing Service. Ad esempio, il valore predefinito per maxPendingAccepts è 4 volte il numero di processori.For example, the default value for maxPendingAccepts is 4 * number of processors. Nei server che ospitano un gran numero di servizi che usano la condivisione delle porte potrebbe essere necessario aumentare questo valore per raggiungere la velocità effettiva massima.Servers that host a large number of services that use port sharing may increase this value to achieve maximum throughput. Il valore predefinito di maxPendingConnections è 100.The default value for maxPendingConnections is 100. Considerare la possibilità di aumentare questo valore se sono presenti più client simultanei che chiamano il servizio e quest'ultimo sta rimuovendo connessioni client.You should consider increasing this value also if there are multiple concurrent clients calling the service and the service is dropping client connections.

SMSvcHost.exe.config contiene inoltre informazioni sulle identità dei processi che potrebbero usare il servizio di condivisione delle porte.SMSvcHost.exe.config also contains information about the process identities that may make use of the port sharing service. Quando un processo si connette al servizio di condivisione delle porte per usare una porta TCP condivisa, l'identità del processo di connessione viene controllata a fronte di un elenco delle identità autorizzate a usare il servizio di condivisione delle porte.When a process connects to the port sharing service to make use of a shared TCP port, the process identity of the connecting process is checked against a list of identities that are permitted to make use of the port sharing service. Queste identità vengono specificate come identificatori di sicurezza (SID) nei <allowAccounts > sezione del file SMSvcHost.exe.These identities are specified as security identifiers (SIDs) in the <allowAccounts> section of the SMSvcHost.exe.config file. Per impostazione predefinita, l'autorizzazione a usare il servizio di condivisione delle porte viene concessa agli account di sistema (LocalService, LocalSystem e NetworkService) così come ai membri del gruppo Administrators.By default, permission to use the port sharing service is granted to system accounts (LocalService, LocalSystem, and NetworkService) as well as members of the Administrators group. Le applicazioni che consentono l'esecuzione di un processo con un'altra identità, ad esempio un'identità utente, per connettersi al servizio di condivisione delle porte, devono aggiungere in modo esplicito il SID appropriato al file SMSvcHost.exe.config. Queste modifiche non vengono applicate fino a quando il processo SMSvc.exe non viene riavviato.Applications that allow a process running as another identity (for example, a user identity) to connect to the port sharing service must explicitly add the appropriate SID to the SMSvcHost.exe.config (these changes are not applied until the SMSvc.exe process is restarted).

Nota

Nei sistemi Windows VistaWindows Vista con il controllo dell'account utente attivato, gli utenti locali necessitano di autorizzazioni elevate anche se il proprio account è un membro del gruppo Administrators.On Windows VistaWindows Vista systems with User Account Control (UAC) enabled, local users require elevated permissions even if their account is a member of the Administrators group. Per consentire a questi utenti di utilizzare il servizio senza l'elevazione dei privilegi, il SID dell'utente (o il SID di un gruppo in cui l'utente è un membro) di condivisione delle porte deve essere aggiunti esplicitamente il <allowAccounts > sezione di SMSvcHost.exe.To allow these users to make use of the port sharing service without elevation, the user's SID (or the SID of a group in which the user is a member) must be explicitly added to the <allowAccounts> section of SMSvcHost.exe.config.

Avviso

Il file SMSvcHost.exe.config predefinito specifica un elemento etwProviderId personalizzato per impedire che la traccia di SMSvcHost.exe interferisca con le tracce del servizio.The default SMSvcHost.exe.config file specifies a custom etwProviderId to prevent SMSvcHost.exe tracing from interfering with service traces.

Vedere ancheSee Also

<NET. TCP ><net.tcp>