De Net.TCP Port Sharing-service configureren
Zelf-hostende services die gebruikmaken van het Net.TCP-transport kunnen verschillende geavanceerde instellingen beheren, zoals ListenBacklog
en MaxPendingAccepts
, die het gedrag van de onderliggende TCP-socket bepalen die wordt gebruikt voor netwerkcommunicatie. Deze instellingen voor elke socket zijn echter alleen van toepassing op bindingsniveau als de transportbinding het delen van poorten heeft uitgeschakeld, wat standaard is ingeschakeld.
Wanneer een net.tcp-binding het delen van poorten toestaat (door in te stellen portSharingEnabled =true
op het element transportbinding), staat deze impliciet een extern proces toe (namelijk de SMSvcHost.exe, die als host fungeert voor de Net.TCP Port Sharing Service) om de TCP-socket namens hem te beheren. Als u bijvoorbeeld TCP gebruikt, geeft u het volgende op:
<tcpTransport portSharingEnabled="true" />
Wanneer deze op deze manier is geconfigureerd, worden socketinstellingen die zijn opgegeven in het transportbindingselement van de service genegeerd ten gunste van de socketinstellingen die zijn opgegeven door SMSvcHost.exe.
Als u de SMSvcHost.exe wilt configureren, maakt u een XML-configuratiebestand met de naam SmSvcHost.exe.config en plaatst u het in dezelfde fysieke map als het uitvoerbare SMSvcHost.exe (bijvoorbeeld C:\Windows\Microsoft.NET\Framework\v4.5).
In het volgende voorbeeld ziet u een voorbeeld van SMSvcHost.exe.config, met de standaardinstellingen voor alle configureerbare waarden die expliciet worden vermeld.
<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>
Wanneer SMSvcHost.exe.config wijzigen
Over het algemeen moet u rekening houden met het wijzigen van de inhoud van het bestand SMSvcHost.exe.config, omdat configuratie-instellingen die in dit bestand zijn opgegeven, van invloed zijn op alle services op een computer die gebruikmaakt van de Net.TCP Port Sharing-service. Dit omvat toepassingen in Windows Vista die gebruikmaken van de TCP-activeringsfuncties van de Windows Process Activation Service (WAS).
Soms moet u echter mogelijk de standaardconfiguratie voor de Net.TCP Port Sharing-service wijzigen. De standaardwaarde is maxPendingAccepts
bijvoorbeeld 4 * aantal processors. Servers die een groot aantal services hosten die gebruikmaken van poortdeling, kunnen deze waarde verhogen om maximale doorvoer te bereiken. De standaardwaarde voor maxPendingConnections
is 100. Overweeg deze waarde ook te verhogen als er meerdere gelijktijdige clients zijn die de service aanroepen en de service clientverbindingen verwijdert.
SMSvcHost.exe.config bevat ook informatie over de procesidentiteiten die gebruik kunnen maken van de service voor het delen van poorten. Wanneer een proces verbinding maakt met de service voor het delen van poorten om gebruik te maken van een gedeelde TCP-poort, wordt de procesidentiteit van het verbindingsproces gecontroleerd op basis van een lijst met identiteiten die mogen worden gebruikt door de service voor het delen van poorten. Deze identiteiten worden opgegeven als beveiligings-id's (SID's) in de <sectie allowAccounts> van het bestand SMSvcHost.exe.config. Standaard wordt aan systeemaccounts (LocalService, LocalSystem en NetworkService) evenals leden van de groep Beheer istrators toestemming verleend voor het gebruik van de service voor het delen van poorten. Toepassingen die toestaan dat een proces dat wordt uitgevoerd als een andere identiteit (bijvoorbeeld een gebruikersidentiteit) verbinding kan maken met de service voor het delen van poorten, moet expliciet de juiste SID toevoegen aan de SMSvcHost.exe.config (deze wijzigingen worden pas toegepast nadat het SMSvc.exe proces opnieuw is opgestart).
Notitie
Op Windows Vista-systemen waarvoor UAC (User Account Control) is ingeschakeld, hebben lokale gebruikers verhoogde machtigingen nodig, zelfs als hun account lid is van de groep Beheer istrators. Als u wilt toestaan dat deze gebruikers gebruikmaken van de service voor delen van poorten zonder uitbreiding, moet de SID van de gebruiker (of de SID van een groep waarin de gebruiker lid is) expliciet worden toegevoegd aan de <sectie allowAccounts> van SMSvcHost.exe.config.
Waarschuwing
Het standaardbestand SMSvcHost.exe.config geeft een aangepast bestand etwProviderId
op om te voorkomen dat SMSvcHost.exe tracering de servicetracering verstoort.