WCF sur IIS8; * Le mappage du gestionnaire .svc ne fonctionne pas


273

J'essaie d'obtenir un service wcf en cours d'exécution dans IIS8 sur 2012 build 8400.

Lors de l'installation du rôle Web, les éléments wcf (sous 3.51) ne se trouvaient pas comme en 2008.

Une fois installé, le mappage du gestionnaire svc était manquant, j'ai donc fait:

%windir%\Microsoft.NET\Framework\v3.0\WindowsCommunication Foundation\ServiceModelReg.exe i

Maintenant, le mappage du gestionnaire est là, mais j'obtiens toujours:

The resource you are looking for does not have a handler associated with it.

(J'ai supprimé le gestionnaire de fichiers statiques.)

Le site utilise le pipeline classique pour utiliser l'emprunt d'identité.

Réponses:


554

Plus précisement:

  1. Exécuter Server Manager(dans la barre des tâches et le menu Démarrer)
  2. Choisissez le serveur à administrer (probablement le serveur local)
  3. Faites défiler jusqu'à la Roles and Featuressection " ".
  4. Choisissez " Add Role or Feature" dans le menu déroulant Tâches
  5. Dans la Add Role or Feature Wizardboîte de dialogue " ", cliquez sur " Features" dans la liste des pages à gauche.
  6. Développez ".Net 3.5"ou ".Net 4.5", selon ce que vous avez installé. (vous pouvez revenir à l' rolesécran " " pour ajouter si vous n'en avez pas.
  7. Sous " WCF Services", cochez la case " HTTP-Activation". Vous pouvez également ajouter des types non http si vous savez que vous en avez besoin (TCP, tubes nommés, etc.).
  8. Cliquez sur le "Install"bouton.

6
Celui-ci n'a pas fonctionné dans mon cas car je suis sur Windows 8 (avec IIS 8).
Josh Mouch

9
Si vous avez d'abord exécuté ServiceModelReg.exe –i à partir du répertoire v3.0, vous devez également exécuter ServiceModelReg.exe –ua pour l'annuler avant que cela ne fonctionne.
Scott Anderson

14
Depuis la ligne de commande: dism / Online / Enable-Feature / FeatureName: WCF-HTTP-Activation / All
Richard

4
Qu'en est-il de gyorgybalassy.wordpress.com/2012/09/24/… ? quelle est la meilleure façon?
Kiquenet

9
Je regardais littéralement la page "Rôles du serveur" pendant une heure. Je ne savais pas que vous pouviez simplement cliquer sur "Suivant" ou cliquer sur "Fonctionnalités" sur la gauche. o_O +1
Dan Bechard

219

J'ai dû activer HTTP Activationdans .NET Framework 4.5 Advanced Services>WCF Services

Activer l'activation HTTP


10
c'est ce que vous devez faire pour Windows 8 où il n'y a pas de gestionnaire de serveur
Simon_Weaver

2
C'est la réponse lorsque vous
hébergez

L'activation http. Est-ce que vous utilisez http / https? Est-ce donc un nom récapitulatif pour les deux ou y a-t-il encore une distinction à faire?
Thomas

2
J'ai rencontré un problème similaire sur IIS 10, l'activation Http est désactivée par défaut. L'activer a résolu le problème immédiatement. Merci!
dhruvpatel

4
Fonctionne pour Windows 10, IIS 10
watbywbarif

45

activez ce qui suit sur «Activer ou désactiver les fonctionnalités Windows»

a) .Net Framework 3.5 - Activation HTTP WCF et activation non-Http

b) tous sous WCF Services


1
Je n'ai eu qu'à activer .Net Framework 3.5 - Activation HTTP WCF
daveywc

40

Windows 8 avec IIS8

  • Frappé Windows+X
  • Sélectionnez Programs and Features(premier élément de la liste)
  • Sélectionnez Turn Windows Features on or offà gauche
  • Développer .NET Framework 4.5 Advanced Services
  • Développer WCF Services
  • Activer HTTP Activation

un script PowerShell pour le faire par programme?
Kiquenet

nous avons un serveur donc je
n'entre

28

Je préfère le faire via un script de nos jours

REM install the needed Windows IIS features for WCF
dism /Online /Enable-Feature /FeatureName:WAS-WindowsActivationService
dism /Online /Enable-Feature /FeatureName:WAS-ProcessModel
dism /Online /Enable-Feature /FeatureName:WAS-NetFxEnvironment
dism /Online /Enable-Feature /FeatureName:WAS-ConfigurationAPI
dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation
dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45

REM Feature Install Complete
pause

2
Merci dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation dism /Online /Enable-Feature /FeatureName:WCF-HTTP-Activation45était suffisant pour moi ...
Shubh

C'est le meilleur moyen de résoudre ce problème sur une nouvelle version 2012R2 + de Windows Server. Fonctionne probablement aussi sur 2012, mais heureusement, je n'en ai plus pour essayer.
Paul Sturm

et en utilisant le script PowerShell ?
Kiquenet

@Kiquenet Ces commandes fonctionneront toutes en PowerShell. Si vous avez tenté de copier directement la commande de Shubh, vous devez ajouter un saut de ligne ou un point-virgule après la première commande avant la deuxième commande dism.
kb4000

10

Nous avons réussi à résoudre l'erreur sous Windows Server 2012 en:

  1. Suppression de «Supprimer les rôles et les fonctionnalités Assistant». Fonctionnalités de .NET Framework 4.5 / ASP.NET 4.5 et toutes ses fonctionnalités dépendantes
  2. Réinstaller les fonctionnalités supprimées.

Il semble que l'ordre d'installation en soit la cause.

Assurez-vous également que l'activation HTTP est installée sous WCF Services.


J'ai fait cela et semble avoir tué mon serveur. Je n'ai désinstallé que les trucs asp.net sous iis, mais maintenant, lorsque je me connecte à distance, j'obtiens un écran noir et une fenêtre d'invite de commandes, comme si le serveur n'est plus que "noyau du serveur" maintenant ... :(
MGOwen

@MGOwen lorsque vous supprimez certaines des fonctionnalités de .net 4.5, il semble qu'il supprime également le shell graphique du serveur, cela peut être ajouté à nouveau avec certaines commandes.
John

3

Pour les machines Windows 8, il n'y a pas d'application "Gestionnaire de serveur" (du moins je n'ai pas pu la trouver).

Bien que j'ai pu résoudre le problème . Je ne sais pas dans quelle séquence j'ai effectué les opérations suivantes, mais il semble qu'une / quelques-unes des actions suivantes aident:

  1. Activez ce qui suit sur «Activer ou désactiver les fonctionnalités Windows» a) .Net Framework 3.5 - Activation HTTP WCF et activation non-Http b) le tout sous Services WCF (comme spécifié dans l'une des réponses à cette question)

  2. exécuté "ServiceModelReg.exe –i" dans le dossier "% windir% \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \"

  3. ASP.NET 2.0 enregistré via deux commandes (dans le dossier C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727):

    aspnet_regiis -ga "AUTORITÉ NT \ SERVICE RÉSEAU" aspnet_regiis -iru

  4. PC redémarré ... il semble que les actions ## 3 et 4 se soient cassées dans ma configuration ASP.NET

  5. Répétez l'action n ° 2

  6. Installez deux autres options à partir des "Programmes et fonctionnalités": .Net Framework 4.5 Advanced Services. J'ai vérifié les deux sous-options: ASP.NET 4.5 et services WCF

  7. Redémarrez le pool d'applications.

La séquence est un peu folle, mais cela m'a aidé et aidera probablement d'autres


Le bit clé active l'activation HTTP.
Umar Farooq Khawaja



2

en utilisant PowerShell, vous pouvez installer la fonctionnalité requise avec:

Add-WindowsFeature 'NET-HTTP-Activation'

1

Sur Windows 10 (client), vous pouvez également créer un script à l'aide de

Enable-WindowsOptionalFeature -Online -NoRestart -FeatureName WCF-HTTP-Activation45 -All

Notez qu'il s'agit d'une commande différente du skus du serveur


0

C'est la fonctionnalité d'activation HTTP du framework .NET La fonctionnalité d'activation des processus Windows est également requise


0

C'était vraiment idiot pour moi. L'ajout ici car c'est l'un des fils les plus populaires sur les problèmes svc 404.

J'ai eu dans mes paramètres de projet \ Web \ URL de projet, collé:

http://blah.webservice.local.blahblah.com/Blah.svc

Et pour une raison inconnue (après l'avoir fait mille fois), je n'ai pas tout de suite remarqué que le nom du fichier .svc était à la fin.

DOH!

Je venais de coller l'adresse de mon client de test WCF et je ne l'avais pas vérifiée suffisamment. Ce que cela a fait en arrière-plan était de créer une application IIS à l'adresse .svc et je ne retirais rien d'IIS. Je n'ai pas pu comprendre comment je ne pouvais même pas toucher le fichier .svc.

Solution simple, évidemment, supprimez simplement l'application dans IIS et modifiez l'URL du projet.

Après presque 20 ans, vous pouvez toujours faire des erreurs d'écolier / des erreurs de recrue. J'espère que cela aide quelqu'un.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.