HTTP не смог зарегистрировать URL http://+: 8000/HelloWCF/. У вашего процесса нет прав доступа к этому пространству имен

Я начинаю работать в 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).

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

Ответ 1

К сожалению, ссылка в тексте исключения 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.

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

Каждый разумный разработчик должен использовать учетную запись RESTRICTED, а не как администратор, но многие люди идут не так, и именно поэтому существует так много приложений, что DEMAND разрешает администратору, когда они на самом деле не требуются. Работа с ленивым способом приводит к ленивым решениям. Надеюсь, вы по-прежнему работаете в ограниченном аккаунте (мои поздравления).

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

Ответ 7

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

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

Ответ 8

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