Condividi tramite


Configurazione del servizio di condivisione delle porte Net.TCP

I servizi indipendenti che utilizzano il trasporto Net.TCP possono controllare diverse impostazioni avanzate, quali 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 al livello di associazione, se l'associazione del trasporto ha disattivato la condivisione delle porte, che è attivata per impostazione predefinita.

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. Ad esempio, quando si utilizza TCP, specificare:

    <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.

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\v3.0\Windows Communication Foundation.

Di seguito viene illustrato un file SMSvcHost.exe.config di esempio, con le impostazioni predefinite per tutti i valori configurabili dichiarate in modo esplicito.

<configuration>
   <system.serviceModel.activation>
       <net.tcp listenBacklog="10"
          maxPendingAccepts="2"
          maxPendingConnections="10"
          receiveTimeout="00:00:10"
          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.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 utilizza il servizio di condivisione delle porte Net.TCP. Sono incluse le applicazioni su Windows Vista che utilizzano le funzionalità di attivazione TCP del servizio di attivazione dei processi di Windows (WAS).

Talvolta può però essere necessario modificare la configurazione predefinita del servizio di condivisione delle porte Net.TCP. Ad esempio, il valore predefinito di maxPendingAccepts è 2, ovvero un valore conservativo. Nei computer che ospitano un gran numero di servizi che utilizzano la condivisione delle porte è necessario aumentare questo valore, per raggiungere la velocità effettiva massima.

SMSvcHost.exe.config contiene inoltre informazioni sulle identità dei processi che potrebbero 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 controllata a fronte di un elenco delle identità autorizzate a utilizzare il servizio di condivisione delle porte. Queste identità sono specificate come identificatori di protezione (SID) nella sezione <allowAccounts> del file SMSvcHost.exe.config. Per impostazione predefinita, l'autorizzazione a utilizzare il servizio di condivisione delle porte viene concessa agli account di sistema (LocalService, LocalSystem e NetworkService) così come ai membri del gruppo Administrators. 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.

Nota

Nei sistemi Windows 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. Per consentire a questi utenti di utilizzare il servizio di condivisione delle porte senza l'elevazione dei privilegi, è necessario aggiungere in modo esplicito il SID dell'utente, o di un gruppo di cui l'utente è membro, alla sezione <allowAccounts> di SMSvcHost.exe.config.

Vedere anche

Altre risorse

<net.tcp>