Droits d'accès WCF ServiceHost


166

J'obtiens l'erreur suivante en parcourant le didacticiel WCF.

HTTP n'a pas pu enregistrer l'URL http: // +: 8000 / ServiceModelSamples / Service / . Votre processus ne dispose pas des droits d’accès à cet espace de noms (voir http://go.microsoft.com/fwlink/?LinkId=70353 pour plus de détails).

Est-ce quelque chose causé par une restriction sur Windows 7?


Vous pouvez trouver de nombreuses informations utiles sur ce blog . Hey fournit également un bel outil graphique.
bob

Réponses:


179

Le problème est que l'URL ne peut pas être créée par Windows.

Étapes à suivre: exécutez l'invite de commande en tant qu'administrateur. Ajouter l'URL à l'ACL

netsh http add urlacl url=http://+:8000/ServiceModelSamples/Service user=mylocaluser

4
Heureux que vous ayez corrigé cela. Que signifiait le "+"?
John Saunders

J'ai l'impression que cela signifie une adresse IP locale générique.
Joshua

12
Remarque: vous devez à peu près entrer url = http: // +: port / chemin exactement. url = adresse: port / chemin n'a pas fonctionné pour moi, comme vous le pensez. Notez également que vous devez utiliser le serveur réseau en tant qu'utilisateur ("NT AUTHORITY \ NETWORK SERVICE", si c'est ce sur quoi le programme d'installation de votre service est défini.
Mike Pateras

8
Pouvez-vous faire cela sans avoir besoin d'un accès administrateur?
setzamora

1
l'utilisation de mon compte pour l'utilisateur n'a pas fonctionné. A travaillé avec l'utilisateur = tout le monde
Kim

90

Si vous exécutez via l'EDI, l'exécution en tant qu'administrateur devrait vous aider. Pour ce faire, recherchez l'icône de l'application Visual Studio 2008/10, cliquez dessus avec le bouton droit de la souris et sélectionnez «Exécuter en tant qu'administrateur»


22
Pas vraiment une solution «bien meilleure» @Liam - les privilèges d'administrateur dans un environnement de développement dans une configuration d'entreprise pourraient vous donner beaucoup plus d'autorisations pour faire des choses dangereuses. Une solution beaucoup plus simple, bien sûr, mais avec le pouvoir vient la responsabilité ...
Unsliced

2
La solution originale nécessitait également une exécution en tant qu'administrateur - accordée pour une période plus courte, et vous devez bien sûr être conscient de ce que vous faites dans un contexte de sécurité.
Stephen Newman du

1
alors, de toute façon faire cela sans privilèges d'administrateur?
setzamora

Parfait. J'exécutais un programme d'IDE qui avait besoin d'enregistrer une URL sur une autre machine et fonctionnait en tant qu'administrateur fonctionnait parfaitement.
ThePartyTurtle

36

Une autre solution consiste à utiliser l'adresse

http: // localhost: 8732 / Design_Time_Addresses / VOTRE_ADRESSE .

.NET Framework (3.5) enregistre automatiquement cette adresse (http: // *: 8732 / Design_Time_Addresses) pour la portée du débogage. Ceci est utile lorsque vous devez héberger des services dans Visual Studio pour le débogage ou les tests. Ne l'utilisez pas en production ...


1
Certains sites font référence au port 8731 au lieu de 8732.
Nenad Dobrilovic

1
@DaviFiamenghi Tant que .net 3.5 est installé, cela devrait fonctionner. Mais je n'ai jamais essayé. Habituellement, je considère un test comme celui-ci comme un test d'intégration, donc je ne l'exécute pas sur TFS, je n'exécute que des tests unitaires sur TFS.
Davide Icardi

@NenadDobrilovic Mine utilise 8733 :). Mais ce n’est pas important.
Hooch

1
Notre serveur utilise localhost: 8733 / Design_Time_Addresses et je n'aurais jamais su le chercher sans votre réponse, merci. De plus, l'outil de Bob a montré toutes les adresses autorisées - c'est ainsi que j'ai découvert que c'était 8733. Merci
Lee Oades

30

Ouvrez une invite de commande en tant qu'administrateur et écrivez la commande ci-dessous pour ajouter votre URL:

netsh http add urlacl url=http://+:8000/YourServiceLibrary/YourService user=Everyone

quelques points à garder à l'esprit:

  1. changer le port selon votre codage
  2. changer le nom de la bibliothèque de service selon le nom de votre bibliothèque
  3. "YourService" est facultatif

pour plus d'informations, vous pouvez vérifier: Configuration de HTTP et HTTPS


3

Ouvrez Visual Studio en tant qu'administrateur .. Il s'exécutera.


J'ai eu le même problème avec nunit-gui. Ran en tant qu'administrateur, tout va bien.
Valamas

J'ai le même problème vs 2013 et courir en tant qu'administrateur ne fonctionne pas
ZoomVirus

pourquoi j'ai besoin d'un administrateur pourquoi ne puis-je pas exécuter en tant qu'utilisateur standard?
John


-2

Je travaille sous Windows Vista. Même moi, j'ai rencontré le même problème, mais lorsque j'ai essayé d'exécuter VS 2008 avec des privilèges administratifs, le problème a été résolu et mon service était opérationnel. :)


-2

L'exécution de Visual Studio en tant qu'administrateur peut résoudre le problème, mais si vous utilisez Visual Studio avec, par exemple, TortoiseSVN, vous ne pouvez valider aucune modification. Une autre solution possible serait d'exécuter le service en tant qu'administrateur et le reste de Visual Studio en tant qu'utilisateur local.


-3

veuillez ouvrir votre Visual Studio en mode Administration, puis essayez-le.


-3

Veuillez ouvrir votre Visual Studio en tant qu'administrateur:

entrez la description de l'image ici

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.