web-dev-qa-db-fra.com

Activation de net.tcp dans IIS7

Comment puis-je établir IIS gérer net.tcp connexions?

60
Jayesh

Vous devez ajouter net.tcp aux protocoles activés de votre site. Allez dans IIS Manager, faites un clic droit sur votre site Web, allez dans "Gérer le site Web" ou "Gérer l'application", puis dans "Paramètres avancés ...". Là, vous voyez "Protocoles activés ". Il indique probablement http. Remplacez-le par http,net.tcp.

Si vous souhaitez configurer des liaisons, cliquez avec le bouton droit sur votre site Web et accédez à "Modifier les liaisons ...". La liaison net.tcp par défaut est 808:*.

Si vous souhaitez utiliser les services WCF hébergés par IIS derrière net.tcp, vous pouvez également vérifier si vous avez activé les fonctionnalités Windows requises. Accédez à vos fonctionnalités Windows et vérifiez que vous avez activé " Activation non HTTP de Windows Communication Foundation "(trouvée sous" Microsoft .NET Framework 3.5.1 ").

Lorsque vous activez cette fonctionnalité, vous obtiendrez des services Windows supplémentaires. Si cela ne fonctionne toujours pas, vérifiez que le service Windows nommé 'Net.Tcp Listener Adapter' est en cours d'exécution (devrait démarrer automatiquement mais parfois il ne fonctionne pas et c'est le premier endroit où je vérifie quand un de mon net.tcp les services ne fonctionnent plus).

119
Ronald Wildenberg

Cela pourrait aider quelqu'un à l'avenir. J'ai créé un script powershell qui vous sera utile si vous devez automatiser la création des liaisons .

Il vérifiera automatiquement si la liaison existe déjà et ne l'ajoutera que si nécessaire.

Script réel

Import-Module WebAdministration

$websites = Get-ChildItem 'IIS:\Sites'
$site = $websites | Where-object { $_.Name -eq 'Default Web Site' }
$netTcpExists = [bool]($site.bindings.Collection | ? { $_.bindingInformation -eq '808:*' -and $_.protocol -eq 'net.tcp' })

if (!$netTcpExists)
{
    Write-Output "Net TCP binding does not exist. Creating binding now..."
    # Create the binding
    New-ItemProperty 'IIS:\Sites\Default Web Site' -name bindings -Value @{protocol="net.tcp";bindingInformation="808:*"}

    Write-Output "Binding created"
}
else
{
    Write-Output "TCP Binding already exists"
}

Write-Output "Updating enabled protocols..."

Set-ItemProperty 'IIS:\sites\Default Web Site' -name EnabledProtocols -Value "http,net.tcp"

Write-Output "Enabled protocols updated"
7
Gavin

La dernière étape a fonctionné pour moi.

  1. Assurez-vous que ces protocoles sont définis dans les "Paramètres avancés" du site Web enter image description here
  2. Assurez-vous que les fonctionnalités ci-dessous sont installées enter image description here
  3. Les services ci-dessous devraient être en cours d'exécution enter image description here
  4. Votre pool d'applications doit utiliser le pipeline intégré
  5. Fermez IIS Manager, réinitialisez IIS et ouvrez à nouveau IIS Manager
  6. Vérifiez la section listenerAdapters dans le fichier applicationHost.config (situé dans C:\Windows\System32\inetsrv\config). Si vous ne voyez pas les adaptateurs d'écoute que vous souhaitez utiliser dans les liaisons, ajoutez-les manuellement enter image description here Source: Liaisons manquantes dans IIS (net.tcp, net.pipe, net.msmq, msmq.formatname)
1
Ned