HTTP не может зарегистрировать URL http://+:8000/HelloWCF/. У вашего процесса нет прав доступа к этому пространству имен - PullRequest
172 голосов
/ 04 января 2012

Я новичок в WCF, но пытаюсь улучшить свой опыт.И на первом этапе я столкнулся с проблемой.Я создал самый простой сервис WCF.Список кода: (весь код в одном файле)

using System;
using System.ServiceModel;

namespace EssentialWCF
{
    [ServiceContract]
    public interface IStockService
    {
        [OperationContract]
        double GetPrice(string ticker);
    }

    public class StockService : IStockService
    {
        public double GetPrice(string ticker)
        {
            return 94.85;
        }
    }

    class Service
    {
        static void Main(string[] args)
        {
            ServiceHost serviceHost = new ServiceHost(typeof(StockService),
                                                        new Uri("http://localhost:8000/HelloWCF"));

            serviceHost.AddServiceEndpoint(typeof(IStockService), new BasicHttpBinding());
            serviceHost.Open();

            Console.WriteLine("To continue press ENTER");

            serviceHost.Close();
        }
    }
}

Это будет служба, которая выдаст мне номер через консоль.Но отладка дает мне исключение: (вместо числа :))

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

Вы когда-нибудь сталкивались с такой же ситуацией?Буду рад каждому совету.

Ответы [ 9 ]

218 голосов
/ 21 июня 2013

К сожалению, ссылка в тексте исключения, http://go.microsoft.com/fwlink/?LinkId=70353, не работает. Однако раньше это приводило к http://msdn.microsoft.com/en-us/library/ms733768.aspx, в котором объясняется, как устанавливать разрешения.

Он в основном сообщает вам использовать следующую команду:

netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user

Более подробную информацию о деталях можно получить, воспользовавшись помощью netsh

Например: netsh http add ?

Дает справку по команде http add.

177 голосов
/ 06 февраля 2012

Я закрыл Visual Studio IDE и снова открыл его, щелкнув правой кнопкой мыши значок Visual Studio и сказав «Запуск от имени администратора», затем, когда я запустил хост, все заработало !!!

14 голосов
/ 09 сентября 2016

Щелкните правой кнопкой мыши Visual Studio> Запуск от имени администратора> Откройте проект и запустите службу.Это проблема, связанная с привилегиями.

13 голосов
/ 20 марта 2013

Вам нужна некоторая привилегия Администратора для вашей учетной записи, если ваша машина находится в локальной сети, тогда вы применяете некоторую привилегию администратора для своего Пользователя, иначе вы должны запустить ide как Администратор ...

10 голосов
/ 16 мая 2014

Простая вещь, которую вам нужно сделать, это закрыть вашу среду Visual Studio и снова открыть ее с помощью «Запуск от имени администратора». Теперь он должен успешно работать.

5 голосов
/ 11 января 2013

В Windows Vista и более поздних версиях служба HTTP WCF вызовет исключение, которое вы упомянули, потому что ограниченная учетная запись не имеет на это права. Вот почему это работает, когда вы запускаете его как администратор.

Каждый разумный разработчик должен использовать ОГРАНИЧЕННУЮ учетную запись, а не как Администратора, но многие люди идут по неправильному пути, и именно поэтому существует так много приложений, которые ТРЕБУЮТ разрешений администратора, когда они на самом деле не нужны. Работа ленивым способом приводит к ленивым решениям. Я надеюсь, что вы все еще работаете в ограниченном аккаунте (мои поздравления).

Существует инструмент (с 2008 года или около того) под названием NamespaceManagerTool, если я правильно помню, который должен предоставлять ограниченные пользовательские разрешения для этих URL-адресов служб, которые вы определяете для WCF. Я не использовал это, хотя ...

1 голос
/ 02 февраля 2018

Хотя мне удалось решить эту проблему на одном компьютере, следуя решениям других пользователей, команда netsh не решила проблему на одном из моих компьютеров, и хотя текущий пользователь имел права администратора, я все еще получал «HTTP не может зарегистрировать URL-адрес .... У вашего процесса нет прав доступа к этому пространству имен». Поэтому я делюсь своим решением на тот случай, если вы все равно не получите его для работы с другими решениями. тоже.

После того, как я также попытался дать разрешение на запись пользователю в физическом каталоге моего веб-сайта и не добился успеха, я наконец решил попытаться изменить настройки IIS .

Как показано на рисунках ниже, я настроил Физические пути доступа моего веб-сайта для подключения в качестве специального пользователя, который являлся учетной записью администратора с DOMAIN \ username и паролем, и этого было достаточно, чтобы ошибка исчезнет.

enter image description here

enter image description here

enter image description here

1 голос
/ 04 января 2012

Ваш пример кода не будет работать, как показано, потому что вы забыли добавить Console.ReadLine() перед строкой serviceHost.Close().Это означает, что хост открывается, а затем сразу же закрывается.

Кроме этого, похоже, у вас проблема с правами доступа на вашем компьютере.Убедитесь, что вы вошли в систему как учетная запись администратора на вашем компьютере.Если вы являетесь администратором, возможно, у вас не запущена служба публикации в Интернете (W3SVC) для обработки HTTP-запросов.

0 голосов
/ 26 января 2016

Закрыть iis express и все браузеры (если URL был открыт в любом из браузеров). Также откройте Visual Studio IDE в режиме администратора. Это решило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...