2009-10-02 11 views
4

Je travaille sur la mise en œuvre d'une approche non web.config des services WCF en utilisant l'attribut d'usine sur le fichier .svc par Rick Strahl's blog post:Le service WCF avec l'attribut Factory sur .svc ne fonctionne pas sur le serveur Web (IIS6), mais utilise localement IIS7?

usine = "System.ServiceModel.Activation.WebScriptServiceHostFactory"

Localement, je je suis en cours d'exécution IIS7 dans Visual studio 2008 et ont pas de problème, mais quand je déploie mon serveur web (en cours d'exécution IIS6), j'obtiens une erreur d'authentification dans le journal des événements:

Exception: System.ServiceModel. ServiceActivationException: Le service '/Services/ResourcesService.svc' ne peut pas être activé en raison d'une exception lors de la compilation. Le message d'exception est: IIS a spécifié des schémas d'authentification 'IntegratedWindowsAuthentication, Anonymous ", mais la liaison uniquement prend en charge la spécification d'exactement un schéma d'authentification . Les schémas d'authentification valides sont Digest, Négocier, NTLM, Basic ou Anonyme. Modifiez les paramètres IIS de sorte que seul un système d'authentification unique est utilisé .. ---> System.InvalidOperationException: IIS spécifié schémas d'authentification « IntegratedWindowsAuthentication, Anonymous », mais la liaison ne prend en charge la spécification d'exactement une authentification schème. Les schémas d'authentification valides sont Digest, Négocier, NTLM, Basic ou Anonyme. Modifiez les paramètres IIS afin que seul un schéma d'authentification unique soit utilisé. à System.ServiceModel.Web.WebServiceHost.SetBindingCredentialBasedOnHostedEnvironment (ServiceEndpoint ServiceEndpoint, AuthenticationSchemes supportedSchemes) à System.ServiceModel.Web.WebServiceHost.AddAutomaticWebHttpBindingEndpoints (ServiceHost hôte, IDictionary`2 implementedContracts, String multipleContractsErrorMessage) au système .ServiceModel.WebScriptServiceHost.OnOpening() à System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan timeout) à System.ServiceModel.Channels.CommunicationObject.Open() à System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService (String normalizedVirtualPath) à System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable (String normalizedVirtualPath)

Après avoir fait quelques recherches sur Google, j'ai changé mes paramètres d'authentification sur le. dossier svc dans mon projet (sur le serveur) à l'authentification anonyme uniquement, mais cela n'a pas fonctionné. Je reçois toujours le service Web échoué sur les appels. IIS7 par défaut avait seulement anonyme.

Je n'ai aucune entrée dans mon web.config pour les services (je les ai effacés selon ce modèle). J'utilise un script nant pour déployer le site Web sur le serveur et l'utiliser également localement pour vérifier que le script ne causait pas le problème.

Un problème connu avec cela? IIS 6 pas en mesure de gérer?

Répondre

0

La principale différence entre IIS 6 et IIS 7 en ce qui concerne WCF est les liaisons qu'ils prennent en charge. Par exemple IIS 6 prend en charge basichttpbinding mais pas nettcpbinding.

L'autre chose à surveiller est que si IIS 6 est configuré pour servir les fichiers .svc, ce .net framework 3.0 est installé.

+0

Le site utilise le framework 3.5, qui est installé localement et sur le serveur web respectivement. La partie confuse - les services sont bien sur le serveur web si j'ai les entrées web.config et aucun attribut d'usine sur le fichier .svc. – Jessica

5

Je suis arrivé cette erreur ...

vérifié mes propriétés du site Web dans IIS Manager et trouvé à la fois anonyme et authentification intégrée de Windows ont été cochés, donc non fait tic tac intégré, mais il serait toujours pas.

Éventuellement repéré un poste qui mentionnait redémarrer IIS ... fait cela et les choses ont fonctionné !!

+0

confirmé, IIS 6 est si frustrant – Xcalibur

Questions connexes