Konfigurowanie usługi współużytkowania portów Net.TCP

Samoobsługowe usługi korzystające z transportu Net.TCP mogą kontrolować kilka zaawansowanych ustawień, takich jak ListenBacklog i MaxPendingAccepts, które zarządzają zachowaniem bazowego gniazda TCP używanego do komunikacji sieciowej. Jednak te ustawienia dla każdego gniazda mają zastosowanie tylko na poziomie powiązania, jeśli powiązanie transportu wyłączyło udostępnianie portów, które jest domyślnie włączone.

Gdy powiązanie net.tcp włącza udostępnianie portów (ustawiając element portSharingEnabled =true powiązania transportu), niejawnie zezwala na proces zewnętrzny (a mianowicie SMSvcHost.exe, który hostuje usługę udostępniania portów Net.TCP) w celu zarządzania gniazdem TCP w jego imieniu. Na przykład w przypadku korzystania z protokołu TCP określ:

<tcpTransport portSharingEnabled="true"  />  

Po skonfigurowaniu w ten sposób wszystkie ustawienia gniazd określone w elemecie powiązania transportu usługi są ignorowane na rzecz ustawień gniazd określonych przez SMSvcHost.exe.

Aby skonfigurować SMSvcHost.exe, utwórz plik konfiguracji XML o nazwie SmSvcHost.exe.config i umieść go w tym samym katalogu fizycznym co plik wykonywalny SMSvcHost.exe (na przykład C:\Windows\Microsoft.NET\Framework\v4.5).

Poniższy przykład ilustruje przykładową SMSvcHost.exe.config z ustawieniami domyślnymi dla wszystkich konfigurowalnych wartości określonych jawnie.

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

Kiedy należy zmodyfikować plik SMSvcHost.exe.config

Ogólnie rzecz biorąc, należy zachować ostrożność podczas modyfikowania zawartości pliku SMSvcHost.exe.config, ponieważ wszystkie ustawienia konfiguracji określone w tym pliku mają wpływ na wszystkie usługi na komputerze korzystającym z usługi udostępniania portów Net.TCP. Obejmuje to aplikacje w systemie Windows Vista korzystające z funkcji aktywacji TCP usługi aktywacji procesów systemu Windows (WAS).

Jednak czasami może być konieczne zmianę domyślnej konfiguracji usługi udostępniania portów Net.TCP. Na przykład wartość domyślna parametru maxPendingAccepts to 4 * liczba procesorów. Serwery hostujące dużą liczbę usług korzystających z udostępniania portów mogą zwiększyć tę wartość w celu osiągnięcia maksymalnej przepływności. Wartość domyślna to maxPendingConnections 100. Należy rozważyć zwiększenie tej wartości również wtedy, gdy istnieje wiele równoczesnych klientów wywołujących usługę, a usługa porzuca połączenia klientów.

SMSvcHost.exe.config zawiera również informacje o tożsamościach procesów, które mogą korzystać z usługi udostępniania portów. Gdy proces łączy się z usługą udostępniania portów w celu korzystania z udostępnionego portu TCP, tożsamość procesu łączenia jest sprawdzana względem listy tożsamości, które mogą korzystać z usługi udostępniania portów. Te tożsamości są określane jako identyfikatory zabezpieczeń (SID) w <sekcji allowAccounts> pliku SMSvcHost.exe.config. Domyślnie uprawnienia do korzystania z usługi udostępniania portów są przyznawane do kont systemowych (LocalService, LocalSystem i NetworkService), a także członków grupy Administracja istrators. Aplikacje, które umożliwiają uruchamianie procesu jako innej tożsamości (na przykład tożsamości użytkownika) w celu nawiązania połączenia z usługą udostępniania portów, muszą jawnie dodać odpowiedni identyfikator SID do SMSvcHost.exe.config (te zmiany nie są stosowane do czasu ponownego uruchomienia procesu SMSvc.exe).

Uwaga

W systemach Windows Vista z włączoną kontrolą konta użytkownika (UAC) użytkownicy lokalni wymagają podwyższonych uprawnień, nawet jeśli ich konto jest członkiem grupy Administracja istrators. Aby umożliwić tym użytkownikom korzystanie z usługi udostępniania portów bez podniesienia uprawnień, identyfikator SID użytkownika (lub identyfikator SID grupy, w której użytkownik jest członkiem), należy jawnie dodać do <sekcji allowAccounts> SMSvcHost.exe.config.

Ostrzeżenie

Domyślny plik SMSvcHost.exe.config określa niestandardowy, etwProviderId aby zapobiec SMSvcHost.exe śledzenia zakłócania śledzenia usługi.

Zobacz też