Erreur HTTP 404.3 - introuvable "lors de la navigation dans le service wcf sur Windows Server 2008 (64 bits)

88

Je développe une application basée sur .Net Framework 3.5 sp1 et hébergée sur Windows Server 2008 (64bit).

Lors de la navigation sur le service wcf (.svc) localement, tout va bien, mais lors de la navigation avec l'URL du domaine complet, une erreur s'est produite.

l'adresse locale est comme ceci: http: //localhost/MyService.svc

et l'adresse de domaine est comme ceci: http://MySite.ir/MyService.svc

par la façon dont les pages (.aspx) et autres fichiers fonctionnent correctement à la fois sur l'hôte local et avec l'adresse de domaine.

Toute idée sera la bienvenue

Voici une erreur détaillée:


Erreur HTTP 404.3 - introuvable

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. Informations d'erreur détaillées

Module: StaticFileModule

Notification: ExecuteRequestHandler

Gestionnaire : StaticFile

Code d'erreur: 0x80070032

URL demandée: http://MySite.ir:80/MyService.svc

Chemin physique: D: \ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc

Méthode de connexion: anonyme

Utilisateur de connexion anonyme

Mori
la source

Réponses:

224

Veuillez vous assurer que vous avez activé les composants WCF à partir d' ici .

Ou un autre moyen simple est d'aller dans le panneau de configuration -> Activer ou désactiver la fonctionnalité Windows -> et assurez-vous que toutes les options sont cochées comme indiqué dans la capture d'écran ci-dessous.

entrez la description de l'image ici

Vous devrez peut-être activer chaque boîte et accepter au cas où vous auriez des erreurs lors de l'activation de toutes les fonctionnalités à la fois

Nirav Mehta
la source
36
.Net Framework 4.5 Advanced Services -> Check WCF Services et -> HTTP Activation l'a fait pour moi!
devHead
3
Windows Server 2012 - juste nécessaire l'activation HTTP et le partage de port vérifié.
dibs487
2
J'ajouterais à cette réponse pour être d'activer les cases une par une. Toutes les vérifications en même temps peuvent échouer. Cela se produit dans Windows Server 2012.
Harveyt
2
cette réponse devrait être en haut
markthewizard1234
3
C'est la bonne réponse. Cela a résolu le problème pour moi et je n'ai pas eu à ajouter manuellement quoi que ce soit aux mappages de gestionnaire IIS.
Anthony le
25

OK, voici la réponse:

Accédez aux mappages de gestionnaires | Ajouter Handler Manager -> Et puis ajoutez les informations ci-dessous

Chemin de la demande: * .svc

Type: System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version = 3.0.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089

Nom: svc-Integrated

Mori
la source
3
Pour tous ceux qui souhaitent ajouter ceci à leur fichier web.config, cela fonctionne pour moi dans un projet .NET 4.5: <add name = "svc-Integrated" path = " .svc" verb = " " type = "System.ServiceModel. Activation.HttpHandler, System.ServiceModel.Activation, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 "/>
Stefan Mohr
6
Pour moi, ajouter la ligne de @StefanMohr au Web.config ne fonctionnait pas vraiment. Cependant, je l' ai changé path="*.svc"et verb="*"il a très bien fonctionné. Ainsi, la ligne que j'ai utilisée qui fonctionnait était: <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>(ajoutée à configuration / system.webServer / handlers).
Aron Boyette
11

Si quelqu'un a ce problème sur Windows Server 2012, la réponse de Bill Lune ici il résolu pour moi:

"Pour Windows Server 2012 ... Dans le Gestionnaire de serveur, cliquez sur Ajouter des rôles et des fonctionnalités, sélectionnez le serveur approprié, puis sélectionnez Fonctionnalités. Sous Fonctionnalités .NET Framework 4.5, vous verrez les services WCF, et en dessous, vous trouver l'activation HTTP. "

Volonté
la source
1
Dans toute application Web existante, vous devrez également faire ce qui suit après avoir ajouté la fonctionnalité Windows: - Démarrez inetmgr - Ouvrez "Mappages de gestionnaire" - Vérifiez si les mappages svc-ISAPI pour l'extension * .svc sont présents. Sinon, utilisez l'action "Revenir au parent" pour les copier à partir du 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 "Revert To Parent".
Berend Engelbrecht
8

J'ai Windows 10 sur mon ordinateur portable et j'utilise Visual Studio 2015 pour le développement WCF. WCF fonctionne bien dans Visual Studio, mais lorsqu'il est hébergé dans IIS, j'ai eu la même erreur.

J'ai vérifié le gestionnaire IIS. l'extension svc était manquante. J'ai donc essayé d'ajouter un nouveau gestionnaire dans IIS comme suggéré par Mori dans la première réponse. Je n'ai pas trouvé le type "System.ServiceModel.Activation.HttpHandler".

J'ai donc ouvert "Activer ou désactiver les fonctionnalités de Windows" et j'ai installé les fonctionnalités mises en évidence dans la capture d'écran.

Cela a fonctionné pour moi.

entrez la description de l'image ici

Anil
la source
0

Si vous utilisez .Net 4.x, le PublicKeyToken est 31bf3856ad364e35.

Cependant, à la suite de cet article sur l'installation correcte des services WCF dans IIS, le gestionnaire a été configuré pour moi.

Thomas Hagström
la source
0

Je voulais ajouter ceci en commentaire à la réponse mais je n'avais pas assez de représentants pour cela. J'ai essayé d'exécuter ServiceModelReg et aspnet_regiis.exe avec divers indicateurs et j'ai ajouté une fonction d'activation HTTP, mais cela ne fonctionnait toujours pas. Même l'utilisation de l'interface utilisateur de mappage de gestionnaire dans IIS ne fonctionnait pas car elle ne pouvait pas trouver System.ServiceModel.Activation.HttpHandler. Ce qui a finalement fonctionné a été d'ajouter manuellement le gestionnaire que Mori mentionne à mon fichier web.config.

<system.webServer>
    <handlers>
      <add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />

Mon projet exécutait .Net 3.5 et IIS 7.5 sur Windows 7 et IIS 7.0 sur Win Server 2008 R2.

Janspeed
la source
0

Essayez de décocher les activations HTTP WCF dans la fenêtre «Activer ou désactiver la fonctionnalité Windows» ( voir ici ) et réinstaller en accédant à

%windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\

et exécuter ServiceModelReg -i

Derviş Özçelik
la source