Freigeben über


Konfigurieren des Net.TCP-Portfreigabediensts

Selbstgehostete Dienste, die den Net.TCP-Transport verwenden, können mehrere erweiterte Einstellungen steuern, z. B ListenBacklog . und MaxPendingAccepts, die das Verhalten des zugrunde liegenden TCP-Sockets steuern, der für die Netzwerkkommunikation verwendet wird. Diese Einstellungen für jeden Socket gelten jedoch nur auf Bindungsebene, wenn für die Transportbindung die standardmäßig aktivierte Portfreigabe deaktiviert wurde.

Wenn eine net.tcp-Bindung die Portfreigabe aktiviert (durch Festlegen portSharingEnabled =true des Transportbindungselements), lässt sie implizit zu, dass ein externer Prozess (nämlich der SMSvcHost.exe, der den Net.TCP-Portfreigabedienst hostet), den TCP-Socket in ihrem Namen zu verwalten. Wenn Sie z. B. TCP verwenden, geben Sie Folgendes an:

<tcpTransport portSharingEnabled="true"  />  

Bei dieser Konfiguration werden alle Socketeinstellungen, die für das Transportbindungselement des Diensts angegeben sind, zugunsten der von SMSvcHost.exeangegebenen Socketeinstellungen ignoriert.

Um die SMSvcHost.exezu konfigurieren, erstellen Sie eine XML-Konfigurationsdatei mit dem Namen SmSvcHost.exe.config, und platzieren Sie sie im selben physischen Verzeichnis wie die ausführbare Datei der SMSvcHost.exe (z. B. C:\Windows\Microsoft.NET\Framework\v4.5).

Das folgende Beispiel veranschaulicht eine Beispiel-SMSvcHost.exe.config, bei der die Standardeinstellungen für alle konfigurierbaren Werte explizit angegeben werden.

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

Wann sollte SMSvcHost.exe.config geändert werden?

Im Allgemeinen ist beim Ändern des Inhalts der SMSvcHost.exe.config Datei Vorsicht geboten, da sich alle in dieser Datei angegebenen Konfigurationseinstellungen auf alle Dienste auf einem Computer auswirken, der den Net.TCP-Portfreigabedienst verwendet. Dies gilt auch für Anwendungen unter Windows Vista, die die TCP-Aktivierungsfunktionen des Windows Process Activation Service (WAS) verwenden.

Manchmal müssen Sie jedoch möglicherweise die Standardkonfiguration für den Net.TCP-Portfreigabedienst ändern. Der Standardwert für maxPendingAccepts ist z. B. 4 * Anzahl der Prozessoren. Server, die eine große Anzahl von Diensten hosten, die Portfreigabe verwenden, können diesen Wert erhöhen, um einen maximalen Durchsatz zu erzielen. Der Standardwert für maxPendingConnections ist 100. Sie sollten erwägen, diesen Wert auch dann zu erhöhen, wenn der Dienst von mehreren Clients gleichzeitig aufgerufen wird und der Dienst Clientverbindungen verwirft.

SMSvcHost.exe.config enthält auch Informationen über die Prozessidentitäten, die den Portfreigabedienst nutzen können. Wenn ein Prozess eine Verbindung zum Portfreigabedienst herstellt, um einen gemeinsam genutzten TCP-Port zu verwenden, wird die Prozessidentität des Verbindungsprozesses mit einer Liste von Identitäten verglichen, die den Portfreigabedienst verwenden dürfen. Diese Identitäten werden als Sicherheits-IDs (SIDs) im <Abschnitt allowAccounts> der SMSvcHost.exe.config Datei angegeben. Standardmäßig wird die Berechtigung zur Verwendung des Portfreigabediensts sowohl Systemkonten (LocalService, LocalSystem und NetworkService) als auch Mitgliedern der Gruppe Administratoren erteilt. Anwendungen, die es einem Prozess ermöglichen, der unter einer anderen Identität (z. B. einer Benutzeridentität) ausgeführt wird, eine Verbindung mit dem Portfreigabedienst herzustellen, müssen dem SMSvcHost.exe.config explizit die entsprechende SID hinzufügen (diese Änderungen werden erst angewendet, wenn der SMSvc.exe Prozess neu gestartet wird).

Hinweis

Auf Windows Vista-Systemen mit aktivierter Benutzerkontensteuerung (User Account Control, UAC) benötigen lokale Benutzer erhöhte Berechtigungen, auch wenn ihr Konto Mitglied der Gruppe Administratoren ist. Damit diese Benutzer den Portfreigabedienst ohne erhöhte Rechte nutzen können, muss die SID des Benutzers (oder die SID einer Gruppe, in der der Benutzer Mitglied ist) explizit dem <allowAccounts-Abschnitt> von SMSvcHost.exe.confighinzugefügt werden.

Warnung

Die standardmäßige SMSvcHost.exe.config Datei gibt eine benutzerdefinierte etwProviderId Datei an, um zu verhindern, dass die SMSvcHost.exe Ablaufverfolgung Dienstablaufverfolgungen beeinträchtigt.

Siehe auch