Impossible de servir les services WCF dans IIS sur Windows 8

199

Lorsque j'essaie de servir un service WCF sur IIS dans une machine Windows 8, j'obtiens l'erreur bien connue

La page que vous demandez ne peut pas être diffusée en raison de la configuration de l'extension. Si la page est un script, ajoutez un gestionnaire. Si le fichier doit être téléchargé, ajoutez une carte MIME.

L'ancien travail était d'exécuter, aspnet_regiis -imais cette commande semble avoir été déconseillée dans Windows 8, ce qui donne une réponse This option is not supported on this version of the operating system. (...).

Quel serait le travail autour?

(J'ai déjà activé avec succès les aspxpages régulières , donc la plupart des configurations IIS semblent saines.)

faester
la source
Pour plus d'informations sur la aspnet_regiis -icommande pour les utilisateurs antérieurs à Windows 8, consultez ce lien: aspsnippets.com/Articles/…
David

Réponses:

406

Semblait être une évidence; le service WCF doit être activé à l'aide Programs and Features -> Turn Windows features on or offdu Panneau de configuration. Accédez à .NET Framework Advanced Services -> WCF Serviceset activez HTTP Activationcomme décrit dans cet article de blog sur mdsn .

À partir de l'invite de commande (en tant qu'administrateur), vous pouvez exécuter:

C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

Si vous obtenez une erreur, utilisez ce qui suit

C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation
C:\> DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45
faester
la source
6
J'ai passé du temps à chercher dans IIS Manager. Je pense qu'IIS Manager devrait avoir une icône dirigeant ou informant l'utilisateur des services avancés du .NET Framework.
Tony_Henrich
En utilisant l'invite de commande, j'ai eu l'erreur "L'opération est terminée mais la fonction d'activation WCF-HTTP n'a pas été activée. Une fonction parent requise peut ne pas être activée. Vous pouvez utiliser l'option / enable-feature / all pour activer automatiquement chaque fonction parent dans la liste suivante. Si les fonctions parentes sont déjà activées, reportez-vous au fichier journal pour des diagnostics supplémentaires. ". J'ai plutôt utilisé la méthode GUI pour savoir ce que j'allumais et cela a fonctionné.
Ben Adams
5
Je suis le même « Une caractéristique requise parent ne peut pas être activé » erreur Ben Anderson, et a essayé la suggestion contenue dans le message d'erreur ( en ajoutant l' /allargument), qui a ensuite travaillé bien: DISM /Online /Enable-Feature /all /FeatureName:WCF-HTTP-Activation45.
Troy Gizzi
1
Vous, monsieur, êtes incroyable. Vous pouvez également ajouter (c'est un petit détail) que cela peut être fait en fonction de la version du .Net Framework. Comme dans.NET 3.5 Framework Advanced Services -> Windows Communication Foundation HTTP Activation
rion18
C'est un épargnant de vie. La plupart des solutions en ligne à ce problème vous permettent uniquement d'activer .Net 3.5 Framework sous les fonctionnalités Web. CE N'EST PAS ASSEZ. Vous devez également faire le pas mentionné ici.
markaaronky
95

Pour Windows Server 2012, la solution est très similaire à celle de faester (voir ci-dessus). Dans le Gestionnaire de serveur, cliquez sur Add roles and features, sélectionnez le serveur approprié, puis sélectionnez Features. En dessous .NET Framework 4.5 Features, vous verrez WCF Services, et en dessous, vous trouverez HTTP Activation.

Bill Moon
la source
Merci pour ça ! mais qu'en est-il de .Net 4? vous pensez que l'activation de ces fonctionnalités fera la même chose pour .Net v4.0?
Aladdin Gallas
2
Dans toute application Web existante, vous devrez également effectuer les opérations suivantes après avoir ajouté la fonction Windows: - Démarrer inetmgr - Ouvrir les "Mappages de gestionnaires" - Vérifier si les mappages svc-ISAPI pour l'extension * .svc sont présents. Sinon, utilisez l'action "Revenir au parent" pour les copier depuis le site Web parent. Notez que cela suppose que les mappages de gestionnaires personnalisés sont configurés dans web.config pour l'application, comme c'est généralement le cas dans IIS7 +. Sinon, vous les perdrez lors de l'exécution de "Revenir au parent".
Berend Engelbrecht
13

Veuillez effectuer les deux étapes suivantes sur IIS 8.0

Ajouter un nouveau type MIME et HttpHandler

  1. Extension: .svc, type MIME: application / octet-stream

  2. Chemin de la demande: * .svc, Type: System.ServiceModel.Activation.HttpHandler, Nom: svc-Integrated

Jeneesh Velayudhan
la source
Meilleure solution pour ma très ancienne installation de Windows 7 qui ne parvient pas à activer - .Net 3.5 (activation Http et non-Http) et WAS. Trop délicat pour réinstaller le système d'exploitation
user919426
Il vaut la peine de connaître cette méthode, en particulier lors de la création et de l'ajout de vos propres gestionnaires. Cependant, si vous utilisez les `` activer et désactiver les fonctionnalités Windows '', vous obtiendrez la plupart des extensions de fichiers connues, ce qui vous fera gagner du temps pour ajouter chacune individuellement (et trouver tous les détails corrects)
Daniel Hollinrake
11

Vous pouvez également y parvenir en activant la fonction Windows. entrez la description de l'image ici entrez la description de l'image ici

Mohit Dharmadhikari
la source
3

C'est vraiment la même solution que la solution de faester et celle de Bill Moon, mais voici comment vous le faites avec PowerShell:

Import-Module Servermanager
Add-WindowsFeature AS-HTTP-Activation

Bien sûr, rien ne vous empêche non plus d'appeler DISMdepuis PowerShell.

JamesQMurphy
la source
Très agréable. Merci pour l'info.
Rod Hartzell
-1

vous pouvez ajouter ce code à web.config dans asp mvc

   <system.webServer>
    <staticContent>
      <remove fileExtension=".srt" />
      <mimeMap fileExtension=".srt" mimeType="text/srt" />
      <remove fileExtension=".vtt" />
      <mimeMap fileExtension=".vtt" mimeType="text/vtt" />
    </staticContent>
  </system.webServer>

vous pouvez changer l'extension de fichier avec votre extension de fichier

malik masis
la source
Salut @malik - Pourriez-vous expliquer comment le mappage d'extensions de fichiers pourrait faire fonctionner les points de terminaison svc?
faester
si je comprends bien, vous pouvez changer l'extension avec votre recherche. Vous pouvez regarder sur feedforall.com/mime-types.htm mais vous diriez autre chose, désolé je ne comprends pas.
malik masis