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
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
la source
path="*.svc"
etverb="*"
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).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. "
la source
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.
la source
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.
la source
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.
la source
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
la source