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"