Configuration du service de partage de ports Net.TCP
Les services auto-hébergés qui utilisent le transport Net.TCP peuvent contrôler plusieurs paramètres avancés, tels que ListenBacklog et MaxPendingAccepts, qui gouvernent le comportement du socket TCP sous-jacent utilisé pour la communication réseau. Toutefois, pour chaque socket, ces paramètres ne s'appliquent qu'au niveau de la liaison si la liaison de transport a désactivé le partage de port, activé par défaut.
Lorsqu'une liaison net.tcp active le partage de port (en définissant portSharingEnabled =true sur l'élément de liaison de transport), elle autorise implicitement un processus externe (à savoir, l'exécutable SMSvcHost.exe, qui héberge le service de partage de ports Net.TCP) à gérer le socket TCP pour son compte. Par exemple, lorsque vous utilisez TCP, spécifiez :
<tcpTransport
portSharingEnabled="true"
/>
Dans le cas de cette configuration, tous les paramètres de socket spécifiés sur l'élément de liaison de transport du service sont ignorés en faveur des paramètres de socket spécifiés par SMSvcHost.exe.
Pour configurer SMSvcHost.exe, créez un fichier de configuration XML nommé SmSvcHost.exe.config et placez-le dans le même répertoire physique que l'exécutable SMSvcHost.exe (par exemple, C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation).
L'exemple suivant montre un exécutable SMSvcHost.exe.config avec les paramètres par défaut pour toutes les valeurs configurables déclarées explicitement.
<configuration>
<system.serviceModel.activation>
<net.tcp listenBacklog="10"
maxPendingAccepts="2"
maxPendingConnections="100"
receiveTimeout="00:00:10"
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>
</configuration>
Quand modifier SMSvcHost.exe.config
En général, il convient de prêter une attention particulière à la modification du contenu du fichier SMSvcHost.exe.config, parce que tout paramètre de configuration spécifié dans ce fichier affecte l'ensemble des services sur un ordinateur utilisant le service de partage de ports Net.TCP. Cela inclut les applications sous Windows Vista qui utilisent les fonctionnalités d'activation TCP du service d'activation de processus de Windows (WAS).
Toutefois, il est parfois nécessaire de modifier la configuration par défaut du service de partage de ports Net.TCP. Par exemple, la valeur par défaut de maxPendingAccepts est 2, ce qui est une valeur conservatrice. Les ordinateurs qui hébergent un grand nombre des services utilisant le partage de port doivent augmenter cette valeur pour atteindre le débit maximal.
SMSvcHost.exe.config contient également des informations concernant les identités de processus qui peuvent utiliser le service de partage de ports. Lorsqu'un processus se connecte au service de partage de ports pour utiliser un port TCP partagé, l'identité de processus de la connexion est vérifiée dans une liste répertoriant les identités autorisées à utiliser le service. Ces identités sont spécifiées comme identificateurs de sécurité (SID, Security Identifier)) dans la section <allowAccounts> du fichier SMSvcHost.exe.config. Par défaut, l'autorisation d'utiliser le service de partage de ports est accordée aux comptes système (LocalService, LocalSystem et NetworkService) ainsi qu'aux membres du groupe Administrateurs. Les applications qui autorisent un processus exécuté en tant qu'autre identité (par exemple, une identité de l'utilisateur) à se connecter au service de partage de ports doivent ajouter explicitement le SID approprié au fichier SMSvcHost.exe.config (ces modifications ne sont appliquées que lorsque le processus SMSvc.exe est redémarré).
Remarque : |
---|
Sous les systèmes Windows Vista avec contrôle de compte utilisateur (UAC) activé, les utilisateurs locaux requièrent des autorisations élevées même si leur compte est un membre du groupe Administrateurs. Pour permettre à ces utilisateurs d'utiliser le service de partage de ports sans élévation, le SID de l'utilisateur (ou le SID d'un groupe dans lequel l'utilisateur est un membre) doit être ajouté explicitement à la section <allowAccounts> du fichier SMSvcHost.exe.config. |
Attention : |
---|
Le fichier SMSvcHost.exe.config par défaut spécifie un etwProviderId personnalisé pour empêcher le traçage SMSvcHost.exe d'interférer avec les traces de service. |