J'essaie de faire fonctionner un service wcf dans IIS8 sur la version 8400 de 2012.
Lors de l’installation du rôle Web, le fichier wcf (sous la version 3.51) n’a pas été trouvé comme en 2008.
Une fois installé, le mappage svc handler était manquant, j'ai donc fait un:
%windir%\Microsoft.NET\Framework\v3.0\WindowsCommunication Foundation\ServiceModelReg.exe –i
Maintenant, le mappage de gestionnaire est là, mais je reçois 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 afin d'utiliser l'emprunt d'identité.
Plus précisement:
Server Manager
(dans la barre des tâches et dans le menu Démarrer)Roles and Features
".Add Role or Feature
" dans le menu déroulant TâchesAdd Role or Feature Wizard
", cliquez sur "Features
" dans la liste des pages à gauche.".Net 3.5"
ou ".Net 4.5"
, en fonction de ce que vous avez installé. (vous pouvez revenir à l'écran "roles
" pour l'ajouter si vous n'en avez pas.WCF Services
", cochez la case "HTTP-Activation
". Vous pouvez également ajouter des types non http si vous savez que vous en avez besoin (tcp, canaux nommés, etc.)."Install"
.Je devais activer HTTP Activation
dans .NET Framework 4.5 Advanced Services
> WCF Services
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 dans les services de la WCF
Windows+X
Programs and Features
(premier élément de la liste)Turn Windows Features on or off
à gauche.NET Framework 4.5 Advanced Services
WCF Services
HTTP Activation
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
Nous avons réussi à résoudre l'erreur sous Windows Server 2012 en:
Il semble que l'ordre d'installation soit la cause.
Assurez-vous également que l'activation HTTP est installée sous Services WCF.
Pour les ordinateurs Windows 8, il n’existe 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 quel ordre j'ai effectué les opérations suivantes, mais une des actions suivantes peut vous aider:
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 indiqué dans l'une des réponses à cette question)
exécuté "ServiceModelReg.exe –i" dans le dossier "% windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation \"
ASP.NET 2.0 enregistré via deux commandes (dans le dossier C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727):
aspnet_regiis -ga "NT AUTHORITY\NETWORK SERVICE" aspnet_regiis -iru
PC redémarré ... il en résulte que les actions ## 3 et 4 ont été endommagées dans ma configuration ASP.NET
Répétez l'action n ° 2
Installez deux autres options à partir de "Programmes et fonctionnalités": Services avancés .Net Framework 4.5. J'ai vérifié les deux sous-options: services ASP.NET 4.5 et WCF
Redémarrez le pool d'applications.
La séquence est un peu folle, mais cela m’a aidé et aidera probablement d’autres
L'ordre d'installation est très important lors de la configuration de IIS 8 sous Windows 8 ou Windows Server 2012.
J'ai eu beaucoup de problèmes à configurer IIS 8 mais finalement, ces liens m'ont aidé
à l'aide de PowerShell, vous pouvez installer la fonctionnalité requise avec:
Add-WindowsFeature 'NET-HTTP-Activation'
Sur Windows 10 (client), vous pouvez également créer un script pour cela en utilisant
Enable-WindowsOptionalFeature -Online -NoRestart -FeatureName WCF-HTTP-Activation45 -All
Notez qu'il s'agit d'une commande différente de celle du serveur.
Sa fonctionnalité d'activation HTTP du framework .NET La fonctionnalité d'activation de processus Windows est également requise
C'était vraiment stupide pour moi. En ajoutant ceci ici car c'est l'un des sujets les plus populaires sur les problèmes svc 404.
J'avais dans l'URL de mon projet Paramètres\Web\Project, collé:
http://blah.webservice.local.blahblah.com/Blah.svc
Et pour une raison inconnue (après l'avoir fait mille fois), nous n'avons pas tout de suite remarqué que le nom du fichier .svc se trouvait à 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. En arrière-plan, cela créait une application IIS à l'adresse .svc et je ne tirais aucun avantage d'IIS. Je ne pouvais pas comprendre comment je ne pouvais même pas frapper le fichier .svc.
Une solution simple, évidemment, il suffit de supprimer l’application dans IIS et de modifier l’URL du projet.
Après presque 20 ans de cela, vous pouvez toujours faire des erreurs d'écolier/erreurs de recrue. J'espère que ça aide quelqu'un.