Servicehost выдает ошибку, хотя добавляется в конфигурацию с помощью netsh - PullRequest
6 голосов
/ 28 мая 2010

ServiceHost.Open() выдает эту ошибку:

HTTP не может зарегистрировать URL http://+:8001/. Ваш процесс не имеет права доступа к этому пространству имен (см. http://go.microsoft.com/fwlink/?LinkId=70353 для деталей).

Итак, я использовал netsh , чтобы добавить URL. Но событие, хотя оно добавлено, я все еще получаю ошибку. Это команда, которую я использую:

netsh http add urlacl url=http://+:8001/ user=djerryy

djerryy - мое компьютерное имя. Когда я запускаю netsh http show urlacl, я вижу, что он был добавлен.

Что я делаю не так?

Заранее спасибо.

Ответы [ 3 ]

16 голосов
/ 28 мая 2010

Похоже, вам не хватает имени учетной записи пользователя, на котором запущена служба. Вот несколько вариантов:

  • Учетная запись локального пользователя:
<strong>netsh</strong> http add urlacl url=http://+:8001/ user=ComputerName\Username
  • Учетная запись пользователя домена:
<strong>netsh</strong> http add urlacl url=http://+:8001/ user=DomainName\Username
  • Встроенная учетная запись NetworkService:
<strong>netsh</strong> http add urlacl url=http://+:8001/ user="NT AUTHORITY\NETWORK SERVICE"
5 голосов
/ 31 августа 2011

Я должен подчеркнуть:

netsh http add urlacl url=http://+:8001/ user="NT AUTHORITY\NETWORK SERVICE"

будет работать только в системе с английским языком!

Лучший способ - убрать этот пробел и сделать его:

netsh http add urlacl url=http://+:8001/ user="NT AUTHORITY\NETWORKSERVICE"

Теперь команда будет работать в любой локали. Я потратил полчаса, борясь с этим сегодня ... все из-за одного символа. ;)

0 голосов
/ 08 мая 2013

Чтобы добавить еще больше к этому ответу: Вы ДОЛЖНЫ указать номер порта! Потратьте довольно много времени, пытаясь авторизовать сервис для привязки к обычному HTTP-адресу, он начал работать только тогда, когда я явно указал:

netsh http add urlacl 
    url=http://some.example.com:80/extension/ 
    user="NT AUTHORITY\NETWORKSERVICE"
...