Dela via


Konfigurera portdelningstjänsten Net.TCP

Lokalt installerade tjänster som använder Net.TCP-transport kan styra flera avancerade inställningar, till exempel ListenBacklog och , MaxPendingAcceptssom styr beteendet för den underliggande TCP-socketen som används för nätverkskommunikation. De här inställningarna för varje socket gäller dock endast på bindningsnivå om transportbindningen har inaktiverat portdelning, vilket är aktiverat som standard.

När en net.tcp-bindning aktiverar portdelning (genom att ställa in portSharingEnabled =true på transportbindningselementet) tillåter den implicit en extern process (nämligen SMSvcHost.exe, som är värd för Net.TCP-portdelningstjänsten) att hantera TCP-socketen för dess räkning. När du till exempel använder TCP anger du:

<tcpTransport portSharingEnabled="true"  />  

När den konfigureras på det här sättet ignoreras alla socketinställningar som anges i tjänstens transportbindningselement till förmån för de socketinställningar som anges av SMSvcHost.exe.

Om du vill konfigurera SMSvcHost.exeskapar du en XML-konfigurationsfil med namnet SmSvcHost.exe.config och placerar den i samma fysiska katalog som den SMSvcHost.exe körbara filen (till exempel C:\Windows\Microsoft.NET\Framework\v4.5).

I följande exempel visas ett exempel SMSvcHost.exe.config, med standardinställningarna för alla konfigurerbara värden uttryckligen angivna.

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

När ska du ändra SMSvcHost.exe.config

I allmänhet bör du vara försiktig när du ändrar innehållet i SMSvcHost.exe.config-filen, eftersom alla konfigurationsinställningar som anges i den här filen påverkar alla tjänster på en dator som använder portdelningstjänsten Net.TCP. Detta inkluderar program i Windows Vista som använder TCP-aktiveringsfunktionerna i Windows Process Activation Service (WAS).

Ibland kan du dock behöva ändra standardkonfigurationen för portdelningstjänsten Net.TCP. Standardvärdet för maxPendingAccepts är till exempel 4 * antal processorer. Servrar som är värdar för ett stort antal tjänster som använder portdelning kan öka det här värdet för att uppnå maximalt dataflöde. Standardvärdet för maxPendingConnections är 100. Du bör överväga att öka det här värdet även om det finns flera samtidiga klienter som anropar tjänsten och tjänsten tar bort klientanslutningar.

SMSvcHost.exe.config innehåller också information om de processidentiteter som kan använda portdelningstjänsten. När en process ansluter till portdelningstjänsten för att använda en delad TCP-port kontrolleras processidentiteten för den anslutande processen mot en lista över identiteter som får använda portdelningstjänsten. Dessa identiteter anges som säkerhetsidentifierare (SID) i <avsnittet allowAccounts> i den SMSvcHost.exe.config filen. Som standard ges behörighet att använda portdelningstjänsten till systemkonton (LocalService, LocalSystem och NetworkService) samt medlemmar i gruppen Administratörer. Program som tillåter att en process som körs som en annan identitet (till exempel en användaridentitet) ansluter till portdelningstjänsten måste uttryckligen lägga till lämpligt SID i SMSvcHost.exe.config (dessa ändringar tillämpas inte förrän den SMSvc.exe processen startas om).

Anmärkning

På Windows Vista-system med UAC (User Account Control) aktiverat kräver lokala användare utökade behörigheter även om deras konto är medlem i gruppen Administratörer. För att dessa användare ska kunna använda portdelningstjänsten utan utökade privilegier måste användarens SID (eller SID för en grupp som användaren är medlem i) uttryckligen läggas till i <avsnittet allowAccounts> i SMSvcHost.exe.config.

Varning

Standardfilen för SMSvcHost.exe.config anger en anpassad etwProviderId för att förhindra att SMSvcHost.exe spårning stör tjänstspårningar.

Se även