Dela via


Konfigurera Net.TCP-portdelningstjänsten

Lokalt installerade tjänster som använder Net.TCP-transporten kan styra flera avancerade inställningar, till exempel ListenBacklog och MaxPendingAccepts, som 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 ange portSharingEnabled =true för transportbindningselementet) tillåter den implicit en extern process (nämligen SMSvcHost.exe, som är värd för Net.TCP-portdelningstjänsten) för att hantera TCP-socketen för dess räkning. När du till exempel använder TCP anger du:

<tcpTransport portSharingEnabled="true"  />  

När de 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.exe skapar 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 du ska ändra SMSvcHost.exe.config

I allmänhet bör du vara försiktig när du ändrar innehållet i filen SMSvcHost.exe.config, eftersom alla konfigurationsinställningar som anges i den här filen påverkar alla tjänster på en dator som använder Net.TCP-portdelningstjänsten. 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 Net.TCP-portdelningstjänsten. 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 också överväga att öka det här värdet om det finns flera samtidiga klienter som anropar tjänsten och tjänsten släpper 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 anslutningsprocessen mot en lista över identiteter som tillåts använda portdelningstjänsten. Dessa identiteter anges som säkerhetsidentifierare (SID) i avsnittet allowAccounts> i <filen SMSvcHost.exe.config. Som standard beviljas 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 körs som en annan identitet (till exempel en användaridentitet) för att ansluta till portdelningstjänsten måste uttryckligen lägga till lämpligt SID i SMSvcHost.exe.config (dessa ändringar tillämpas inte förrän SMSvc.exe processen startas om).

Kommentar

I 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 där användaren är medlem) uttryckligen läggas till <i avsnittet allowAccounts> i SMSvcHost.exe.config.

Varning

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

Se även