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

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 ответа

Решение

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

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

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

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

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

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

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

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

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

netsh http add urlacl 
    url=http://some.example.com:80/extension/ 
    user="NT AUTHORITY\NETWORKSERVICE"
Другие вопросы по тегам