WCF ServiceHost права доступа


166

Я получаю следующую ошибку при прохождении учебника WCF.

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

Это что-то вызвано ограничением на Windows 7?


Вы можете найти много полезной информации в этом блоге . Эй, также предоставляет хороший инструмент GUI.
Боб

Ответы:


179

Проблема в том, что URL заблокирован от создания Windows.

Действия по исправлению: Запустите командную строку от имени администратора. Добавьте URL в ACL

netsh http add urlacl url=http://+:8000/ServiceModelSamples/Service user=mylocaluser

4
Рад, что вы это исправили. Что означает "+"?
Джон Сондерс

У меня есть догадка, что это означает общий локальный IP.
Джошуа

12
Примечание: вы в значительной степени должны точно ввести url = http: // +: port / path. url = адрес: порт / путь не работает для меня, как вы думаете, это могло бы. Также обратите внимание, что вы должны использовать сетевой сервер в качестве вашего пользователя («NT AUTHORITY \ NETWORK SERVICE», если это то, на что настроен установщик вашей службы.
Майк Патерас

8
Любой способ сделать это без необходимости доступа администратора?
Сетзамора

1
использование моей учетной записи для пользователя не работает. Работал с пользователем = Все
Ким

90

Если вы работаете через IDE, вам следует помочь в качестве администратора. Для этого найдите значок приложения Visual Studio 2008/10, щелкните его правой кнопкой мыши и выберите «Запуск от имени администратора».


22
Не совсем «лучшее» решение @Liam - привилегии администратора в среде разработчика в корпоративной установке могут дать вам гораздо больше разрешений на опасные вещи. Конечно, гораздо более простое решение, но с властью приходит ответственность ...
Unsliced

2
Оригинальное решение также требовало выполнения от имени администратора - предоставляется на меньший период времени, и, конечно, вам необходимо знать, что вы делаете, в контексте безопасности.
Стивен Ньюман

1
Итак, в любом случае, чтобы сделать это без прав администратора?
Сетзамора

Отлично. Я запускал программу из IDE, которая должна была зарегистрировать URL на другом компьютере, и работал как администратор, работал отлично.
ThePartyTurtle

36

Другое решение - использовать адрес

http: // localhost: 8732 / Design_Time_Addresses / YOUR_ADDRESS .

.NET Framework (3.5) автоматически регистрирует этот адрес (http: // *: 8732 / Design_Time_Addresses) для области отладки. Это полезно, когда вам нужно разместить службы в Visual Studio для отладки или тестирования. Не используйте это на производстве ...


1
Некоторые сайты ссылаются на порт 8731 вместо 8732.
Ненад Добрилович

1
@DaviFiamenghi Пока установлен .net 3.5, он должен работать. Но я никогда не пробовал. Обычно я считаю такой тест интеграционным тестом, поэтому я не запускаю его на TFS, я запускаю только модульные тесты на TFS.
Давиде Икарди

@NenadDobrilovic Mine использует 8733 :). Но это не важно.
Хуч

1
Наш сервер использует localhost: 8733 / Design_Time_Addresses, и я бы никогда не узнал, что искать его без вашего ответа, спасибо. Кроме того, инструмент Боба показал все разрешенные адреса - вот как я обнаружил, это было 8733. Спасибо
Ли Оадес

30

Откройте командную строку от имени администратора и напишите ниже команду, чтобы добавить свой URL:

netsh http add urlacl url=http://+:8000/YourServiceLibrary/YourService user=Everyone

несколько моментов, которые нужно иметь в виду:

  1. изменить порт в соответствии с вашей кодировкой
  2. изменить имя библиотеки службы в соответствии с именем вашей библиотеки
  3. «YourService» не является обязательным

Для получения дополнительной информации вы можете проверить: Настройка HTTP и HTTPS


3

Откройте Visual Studio с правами администратора. Он запустится.


У меня была такая же проблема с nunit-gui. Побежал как администратор, все хорошо.
Валамас

У меня та же проблема, что и у 2013 года, и работа с
правами

почему мне нужен админ, почему я не могу работать как обычный пользователь?
Джон

0

Другой вариант, что работа ..,

Если вы измените dedentity в пуле приложений, вы можете запустить код, идея состоит в том, чтобы изменить учетную запись выполнения пула приложений для одной учетной записи с большим количеством привилегий,

Для более подробной информации используйте этот блог

https://letrasandnumeros.com/2017/11/27/http-could-not-register-url-http-80-hellowcf-your-process-does-not-have-access-rights-to-this-namespace/


-2

Я работаю над Windows Vista. Даже я столкнулся с той же проблемой, но когда я попытался запустить VS 2008 с правами администратора, проблема была решена, и мой сервис был запущен. :)


-2

Запуск Visual Studio с правами администратора может решить эту проблему, но если вы используете Visual Studio, например, с TortoiseSVN, вы не сможете зафиксировать какие-либо изменения. Другим возможным решением было бы запустить службу от имени администратора, а остальные Visual Studio от имени локального пользователя.


-3

Пожалуйста, откройте Visual Studio в режиме администрирования и попробуйте.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.