Sdílet prostřednictvím


Konfigurace Služby sdílení portů Net.TCP

Služby v místním prostředí, které používají přenos Net.TCP, můžou řídit několik upřesňujících nastavení, například ListenBacklog a MaxPendingAccepts, které řídí chování základního soketu TCP používaného pro síťovou komunikaci. Tato nastavení pro každý soket se ale použijí pouze na úrovni vazby, pokud přenosová vazba zakázala sdílení portů, což je ve výchozím nastavení povolené.

Když vazba net.tcp umožňuje sdílení portů (nastavením portSharingEnabled =true prvku vazby přenosu), implicitně umožňuje externí proces (konkrétně SMSvcHost.exe, který hostuje službu Sdílení portů Net.TCP) ke správě soketu TCP jeho jménem. Například při použití protokolu TCP zadejte:

<tcpTransport portSharingEnabled="true"  />  

Při konfiguraci tímto způsobem se všechna nastavení soketu zadaná v elementu vazby přenosu služby ignorují ve prospěch nastavení soketu určeného SMSvcHost.exe.

Pokud chcete nakonfigurovat SMSvcHost.exe, vytvořte konfigurační soubor XML s názvem SmSvcHost.exe.config a umístěte ho do stejného fyzického adresáře jako spustitelný soubor SMSvcHost.exe (například C:\Windows\Microsoft.NET\Framework\v4.5).

Následující příklad znázorňuje ukázkovou SMSvcHost.exe.config s výchozím nastavením pro všechny konfigurovatelné hodnoty uvedené explicitně.

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

Kdy upravit SMSvcHost.exe.config

Obecně platí, že při úpravě obsahu souboru SMSvcHost.exe.config je potřeba věnovat pozornost, protože všechna nastavení konfigurace zadaná v tomto souboru mají vliv na všechny služby v počítači, který používá službu Sdílení portů Net.TCP. To zahrnuje aplikace v systému Windows Vista, které používají funkce aktivace TCP služby aktivace procesu systému Windows (WAS).

Někdy ale může být potřeba změnit výchozí konfiguraci pro službu Sdílení portů Net.TCP. Například výchozí hodnota pro maxPendingAccepts je 4 * počet procesorů. Servery, které hostují velký počet služeb, které používají sdílení portů, můžou tuto hodnotu zvýšit, aby se dosáhlo maximální propustnosti. Výchozí hodnota je maxPendingConnections 100. Tuto hodnotu byste měli zvážit také v případě, že služba volá více souběžných klientů a služba ruší připojení klientů.

SMSvcHost.exe.config obsahuje také informace o identitách procesu, které mohou využívat službu sdílení portů. Když se proces připojí ke službě sdílení portů, aby používal sdílený port TCP, zkontroluje se identita procesu připojování v seznamu identit, které mají povoleno využívat službu sdílení portů. Tyto identity se zadají jako identifikátory zabezpečení (SID) v <části allowAccounts> v souboru SMSvcHost.exe.config. Ve výchozím nastavení se oprávnění k používání služby sdílení portů uděluje systémovým účtům (LocalService, LocalSystem a NetworkService) a také členům skupiny Správa istrators. Aplikace, které umožňují, aby se proces spuštěný jako jiná identita (například identita uživatele) připojily ke službě sdílení portů, musí explicitně přidat odpovídající identifikátor SID do SMSvcHost.exe.config (tyto změny se nepoužijí, dokud se proces SMSvc.exe nerestartuje).

Poznámka:

V systémech Windows Vista s povoleným nástrojem Řízení uživatelských účtů (UAC) vyžadují místní uživatelé zvýšená oprávnění, i když je jejich účet členem skupiny Správa istrators. Aby mohli tito uživatelé využívat službu sdílení portů bez zvýšení oprávnění, musí být identifikátor SID uživatele (nebo IDENTIFIKÁTOR SID skupiny, ve které je uživatel členem), explicitně přidán do <části allowAccounts> SMSvcHost.exe.config.

Upozorňující

Výchozí soubor SMSvcHost.exe.config určuje vlastní etwProviderId soubor, který zabrání trasování SMSvcHost.exe v narušení trasování služby.

Viz také