2012-12-16 2 views
12

Je souhaite héberger wcf dans le service de fenêtre. Je l'ai fait plusieurs fois auparavant sans aucun problème. Cette fois Après avoir installé le service et cliquez sur Démarrer, j'obtiens l'erreur suivante dans EventViewer.Le service ne peut pas être démarré. Impossible d'enregistrer l'URL

Service cannot be started. System.ServiceModel.AddressAccessDeniedException: HTTP could not register URL http://+:.../.../. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details).

Lorsque je serai l'hôte le même service, même adresse sur ConsoleApplication - tout droit.

J'ai vu les questions here et here, mais aucune des solutions ne m'a aidé.

Est-ce que quelqu'un a une idée?

Répondre

7

Je trouve que le changement de compte installateur de LocalSystem a fait le travail :-)

+3

Il m'a fallu un certain temps pour trouver comment faire cela, voici donc les étapes: Ouvrez le programme de services (Démarrer -> afficher les services locaux dans Win 7), trouver votre service dans la liste, cliquez dessus avec le bouton droit, cliquez sur Propriétés, allez à l'onglet connexion. J'ai changé le mien en mon compte et mot de passe Active Directory. – Aligned

+0

Si vous souhaitez modifier le service lui-même, sans modifier l'instance de service manuellement. Changez la propriété "Compte" du ServiceProcessInstaller. – Harry

17

Quant à votre réponse, c'est un peu de débogage de fusil de chasse. Vous avez maintenant un service de réseau avec des privilèges d'administrateur:

LocalSystem Account (Windows):

Le compte LocalSystem [...] a des privilèges étendus sur l'ordinateur local, et agit en tant que l'ordinateur sur le réseau. Son jeton inclut les SID NT AUTHORITY \ SYSTEM et BUILTIN \ Administrators; ces comptes ont accès à la plupart des objets système.

La plupart des services n'ont pas besoin d'un tel niveau de privilège. Si votre service n'a pas besoin de ces privilèges et qu'il ne s'agit pas d'un service interactif, envisagez d'utiliser le compte LocalService ou le compte NetworkService. Pour plus d'informations, voir Sécurité du service et droits d'accès.

Alors vous feriez mieux d'exécuter ce service comme NetworkService, et lui donner les autorisations nécessaires pour utiliser le port que vous essayez d'utiliser comme expliqué dans Configuring HTTP and HTTPS:

netsh http add urlacl url=http://+:80/MyUri user="NT AUTHORITY\NETWORK SERVICE" 
Questions connexes