Konfigurieren des Net.TCP-PortfreigabedienstsConfiguring the Net.TCP Port Sharing Service

Selbst gehostete Dienste, die den Net.TCP-Transport verwenden, können erweiterte Einstellungen festlegen, etwa ListenBacklog und MaxPendingAccepts, die das Verhalten des zugrunde liegenden, für die Netzwerkkommunikation verwendeten TCP-Sockets bestimmen.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. Diese Einstellungen werden auf Bindungsebene jedoch nur für jeden Socket wirksam, wenn die Transportbindung die standardmäßig aktivierte Anschlussfreigabe deaktiviert hat.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.

Wenn eine Net.TCP-Bindung die Anschlussfreigabe aktiviert (indem für das Transportbindungselement portSharingEnabled =true festgelegt wird), erlaubt sie implizit einem externen Prozess (nämlich dem Prozess SMSvcHost.exe, der den Net.TCP-Portfreigabedienst hostet), den TCP-Socket in ihrem Namen zu verwalten.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. Geben Sie zum Beispiel, wenn Sie TCP verwenden, Folgendes an:For example, when using TCP, specify:

    <tcpTransport   
        portSharingEnabled="true"  
/>  

Die Einstellungen eines auf diese Weise konfigurierten Sockets, die mit dem Transportbindungselement des Diensts angegeben wurden, werden zugunsten der von SMSvcHost.exe angegebenen Einstellungen ignoriert.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.

Erstellen Sie zum Konfigurieren von SMSvcHost.exe eine XML-Konfigurationsdatei mit dem Namen "SmSvcHost.exe.config", und platzieren Sie sie im gleichen physischen Verzeichnis wie die ausführbare Datei "SMSvcHost.exe" (zum Beispiel unter "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).

Im folgenden Beispiel wird eine SMSvcHost.exe.config-Datei gezeigt, in der alle konfigurierbaren Werte explizit mit den Standardeinstellungen festgelegt wurden.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>  

Wann SMSvcHost.exe.config zu ändern istWhen to Modify SMSvcHost.exe.config

Im Allgemeinen sollten Sie vorsichtig sein, wenn Sie den Inhalt der Datei SMSvcHost.exe.config ändern, weil jede in dieser Datei angegebene Konfigurationseinstellung alle Dienste eines Computers betrifft, die den Net.TCP-Portfreigabedienst verwenden.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. Dies schließt Anwendungen unter Windows VistaWindows Vista ein, die die TCP-Aktivierungsfunktionen von WAS (Windows Process Activation Service) verwenden.This includes applications on Windows VistaWindows Vista that use the TCP Activation features of the Windows Process Activation Service (WAS).

Sie müssen jedoch möglicherweise manchmal die Standardkonfiguration für den Net.TCP-Portfreigabedienst ändern.However, sometimes you may need to change the default configuration for the Net.TCP Port Sharing Service. Beispielsweise ist der Standardwert für maxPendingAccepts 4 * Anzahl von Prozessoren.For example, the default value for maxPendingAccepts is 4 * number of processors. Auf Servern, die eine große Anzahl von Diensten hosten, die die Portfreigabe verwenden, kann dieser Wert erhöht werden, um einen höheren Maximaldurchsatz zu erzielen.Servers that host a large number of services that use port sharing may increase this value to achieve maximum throughput. Der Standardwert von maxPendingConnections ist 100.The default value for maxPendingConnections is 100. Sie können diesen Wert auch erhöhen, wenn der Dienst von mehreren Clients gleichzeitig aufgerufen wird und Clientverbindungen verloren gehen.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 enthält auch Informationen über die Prozessidentitäten, die möglicherweise den Anschlussfreigabedienst nutzen.SMSvcHost.exe.config also contains information about the process identities that may make use of the port sharing service. Wenn ein Prozess eine Verbindung zu einem Anschlussfreigabedienst herstellt, um einen freigegebenen TCP-Anschluss zu verwenden, wird die Prozessidentität des verbindenden Prozesses mit einer Liste der Identitäten verglichen, die den Anschlussfreigabedienst verwenden dürfen.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. Diese Identitäten werden als Sicherheits-IDs (SIDs) angegeben, der <AllowAccounts >-Abschnitt der Datei SMSvcHost.exe.config.These identities are specified as security identifiers (SIDs) in the <allowAccounts> section of the SMSvcHost.exe.config file. Die Berechtigung, den Anschlussfreigabedienst verwenden zu dürfen, wird standardmäßig Systemkonten (LocalService, LocalSystem und NetworkService) sowie Mitgliedern der Administratorgruppe gewährt.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. Anwendungen, die einem Prozess erlauben, mit einer anderen Identität (beispielsweise einer Benutzeridentität) die Verbindung mit dem Anschlussfreigabedienst herzustellen, müssen die entsprechende SID explizit in die Datei SMSvcHost.exe.config aufnehmen (diese Änderungen werden erst durch einen Neustart des SMSvc.exe-Prozesses wirksam).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).

Hinweis

Auf Windows VistaWindows Vista-Systemen, auf denen die Benutzerkontensteuerung (User Account Control, UAC) aktiviert ist, benötigen lokale Benutzer erweiterte Berechtigungen, auch wenn ihr Konto Mitglied der Administratorgruppe ist.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. Für diese Benutzer stellen zuzulassen Verwendung der anschlussfreigabedienst den Dienst ohne Erhöhung der Rechte, die SID des Benutzers (oder die SID einer Gruppe, in denen der Benutzer Mitglied ist) muss explizit hinzugefügt werden, um die <AllowAccounts > Abschnitt SMSvcHost.exe.config.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.

Warnung

In der Standarddatei SMSvcHost.exe.config wird eine benutzerdefinierte etwProviderId angeben, um zu verhindern, dass Konflikte zwischen der SMSvcHost.exe-Ablaufverfolgung und Dienstablaufverfolgungen auftreten.The default SMSvcHost.exe.config file specifies a custom etwProviderId to prevent SMSvcHost.exe tracing from interfering with service traces.

Siehe auchSee Also

<NET.TCP ><net.tcp>