7
votes

ServiceHost jetant une erreur, même s'il est ajouté à la configuration avec Netsh

servicehost.open () lance cette erreur:

http n'a pas pu enregistrer URL http: // +: 8001 / . Votre processus n'a pas droits d'accès à cet espace de noms (voir http://go.microsoft.com/fwlink/?Linkid=70353 pour plus de détails ).

Alors j'ai utilisé netsh pour ajouter l'URL. Mais événement bien que cela soit ajouté, je reçois toujours l'erreur. C'est la commande que j'utilise:

netsh http Ajouter URLACL URL = http: // +: 8001 / utilisateur = djerryy

djerryy est mon nom d'ordinateur. Quand je gère NetSH HTTP Show Urlacl, je vois qu'il a été ajouté.

Qu'est-ce que je fais mal?

Merci d'avance.


0 commentaires

3 Réponses :


21
votes

On dirait que vous manquez le nom du compte d'utilisateur qui exécute le service. Voici quelques options:

  • Compte d'utilisateur local: xxx
    • Compte d'utilisateur du domaine: xxx
      • Compte NetworkService intégré: xxx

7 commentaires

Je ne suis pas dans un domaine. et j'ai essayé djerryy \ djerry, qui m'a toujours donné la même erreur


Où accueillez-vous votre service? Commencez-vous de Visual Studio? Quel est le point final de service?


Non, le service a été installé avec un projet d'installation. Il exécute des services Windows. C'est l'adresse que j'utilise comme Uri: "net.tcp: // localhost: 8000", mais j'essaie aussi d'ajouter 8000 ...


Cette URL n'utilise pas HTTP comme protocole de transport. Il utilise TCP, vous ne devriez donc pas obtenir cette erreur. Ne devrait-il pas être " localhost: 8001 " à la place? En outre, sous quel compte d'utilisateur est le service Windows exécuté?


Tu m'as perdu maintenant: ceci (net.tcp: // localhost: 8000) n'est pas utilisé dans les commandes si je vous comprends correctement, c'est la configuration de mon serveur (ce lien affiche ma configuration: Stackoverflow.com / Questions / 2847097 / ... ) Le service est en cours d'exécution en tant que service réseau et je suis connecté en tant que "Djerry", qui devrait être administrateur.


Vous devez accorder l'accès à l'URL HTTP au compte Networkservice. J'ai mis à jour ma réponse avec la commande correcte.


Enfin, ServiceHost a ouvert ses portes. Maintenant, pour que mon client se connecte à nouveau ... :)



5
votes

Je dois souligner:

netsh http Ajouter URLACL URL = http: // +: 8001 / user = "NT Autorité \ Service de réseau"

ne fonctionnera que sur un système avec la locale anglaise!

Un meilleur moyen est de supprimer cet espace et de le faire:

netsh http Ajouter URLACL URL = http: // +: 8001 / utilisateur = "NT Autorité \ Networkservice"

Maintenant, la commande fonctionnera sur n'importe quel local. J'ai passé un bon 0,5h combattant cela aujourd'hui ... tout à cause d'un seul caractère. ;)


0 commentaires

0
votes

Pour ajouter encore plus à cette réponse: vous DOIT Spécifiez un numéro de port! Passez tout à fait un certain temps en essayant d'autoriser un service à lier à une adresse HTTP normale, il n'a commencé que de travailler lorsque j'ai explicitement spécifié: xxx


0 commentaires