Размещение службы WCF в Vista

Я собрал небольшую службу WCF в VS2008, и когда я пытаюсь запустить хост с использованием протокола HTTP, он взрывается, потому что у него нет на это соответствующих прав. В моей строке «Host.Open ()» я получаю следующее исключение: «HTTP не удалось зарегистрировать URL-адрес http://+:9001/. У вашего процесса нет прав доступа к этому пространству имен. " У меня, похоже, не возникало этой проблемы при использовании TCP. Моя операционная система - Vista Home Premium.

Это происходило, когда я пытался отладить его внутри VS2008. После долгих исследований я решил, что могу запустить хост, построив его, перейдя в папку «bin» и щелкнув правой кнопкой мыши исполняемый файл, выбрав «Запуск от имени администратора». То же самое произошло, когда я попытался использовать WcfSvcHost.exe. Мне пришлось открыть окно командной строки VS2008 из моего меню с помощью «Запуск от имени администратора», прежде чем я смог успешно получить WcfSvcHost для запуска моей службы.

Есть ли способ сделать это правильно вместо того, чтобы использовать этот обходной путь? Возникнут ли у меня аналогичные проблемы, когда я попытаюсь развернуть на следующей неделе Windows 2003 Server?


person Mike K    schedule 28.02.2009    source источник


Ответы (4)


Эта ссылка может вам помочь: http://msdn.microsoft.com/en-us/library/ms733768.aspx

Краткая версия: предварительно зарегистрируйте URL / пространство имен из привилегированной консоли

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

person mostlytech    schedule 28.02.2009
comment
Я попробовал это вчера и не смог заставить его работать. Ваше мнение о том, что это должна быть привилегированная консоль, подсказало мне, что я должен выполнять командную строку как администратор. Я попробовал это только сейчас, и это сработало. Думаю, мне придется это делать после каждой перезагрузки? - person Mike K; 01.03.2009
comment
AFAIK вам нужно сделать это только один раз (для каждой пары пространства имен / пользователя, которую вы хотите зарезервировать) - person mostlytech; 01.03.2009
comment
Возможно, вам придется предоставить учетной записи, на которой запущены права администратора службы. Таким образом, вам не придется делать это заново при каждой перезагрузке. - person Andy White; 01.03.2009

Убедитесь, что вы запускаете VS от имени администратора.

person markt    schedule 28.02.2009
comment
Хорошая точка зрения. Моя учетная запись является учетной записью администратора, но я часто забываю, что ничего из того, что я делаю, не предоставляется администратору, если я не запрашиваю это явно. Раздражающий... - person Mike K; 01.03.2009

Локально вы можете изменить свой базовый адрес на что-то вроде этого:

    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8731/Design_Time_Addresses/MyService/" />
      </baseAddresses>
    </host>

Основная часть - добавление "Design _ Time _ Addresses". Если вы создаете проект библиотеки служб WCF, он по умолчанию настраивает App.config для проекта, как это. Так все работает нормально, но если вы удалите «Design _ Time _ Addresses» и попытаетесь запустить его с помощью «http://localhost:8731/MyService/ ", вы получите ошибку, с которой столкнулись.

person Josh Close    schedule 12.06.2009
comment
Это идеально подходит, когда вы пытаетесь настроить модульный тест, в котором вы хотите выполнить привязку к http, и протестировать службу, используя канал http. - person Kris; 06.02.2010

У меня была аналогичная проблема:

Ошибка WCF ServiceHost basicHttpBinding 503

Команда netsh работает для Vista, но для сервера Windows 2003 существует служебная программа HttpCfg.exe, которая позволяет вам зарегистрировать URL / пространство имен для учетной записи. Не уверен, что Netsh доступен в 2003 году.

Мне так и не удалось заставить его работать в Vista, я все еще получаю ошибку 503, когда пытаюсь получить доступ к службам. Если вы столкнетесь с той же проблемой / разберетесь с ней, я буду признателен, если вы опубликуете ее снова! Спасибо

person Andy White    schedule 01.03.2009