netsh не работает для AddressAccessDeniedException: HTTP не может зарегистрировать URL

Когда другой разработчик попытался запустить службу через 2010, они получили ошибку:

Please try changing the HTTP port to 88 or running as Administrator. System.ServiceModel.AddressAccessDeniedException: HTTP could not register URL http://+:88/ColorService/. Your process does not have access rights to this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details). ---> System.Net.HttpListenerException: Access is denied

После некоторых поисков и перехода по указанной Microsoft ссылке, я попросил их выполнить следующую команду:

netsh http add urlacl url = http: // +: 88 / ColorService user = BUILTIN \ Администраторы

Ошибка все еще возникла, поэтому я также попросил их запустить команду с доменом \ пользователем

netsh http add urlacl url=http://+:88/ColorService user=DOMAIN\User

Выше все еще не работает, поэтому я нашел инструмент по следующей ссылке, чтобы попробовать и дать доступ к NT Authority\Interactive, но это тоже не сработало.

Я наконец вернулся к тому, чтобы дать каждой конечной точке базовый адрес:

http:\\localhost:8732\Design_Time_Addresses\ColorService и это сработало после этого.

Почему он не работает с другими базовыми адресами?

У меня также не было никаких DNS-узлов в каждой конечной точке, имеет ли это значение? Для чего это используется? Я добавил его обратно как:

 <Host>
     <dns>localhost<dns/>
 </Host> 

1 ответ

У меня была эта ошибка. Я настроил его в app.config с конечными точками, такими как:

<host>
<baseAddresses>
    <add baseAddress="http://ttintlonape01:6970/janus/data" />
</baseAddresses>

... но он придумал http://+:80/janus/data, который вы получили.

Оказалось, что WCF автоматически устанавливает конечную точку (не уверен, когда) - добавление в конфиг исправило ее. Т.е.

<service behaviorConfiguration="ServiceBehavior" name="TT.Janus.Service.DataProvider">
<clear />
<endpoint address="net.tcp://ttintlonape01/janus/data" binding="netTcpBinding"
    bindingConfiguration="NoSecurityBinding" contract="TT.Janus.Service.IDataProvider" />
<endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" contract="IMetadataExchange" />
<host>
    <baseAddresses>
        <add baseAddress="http://ttintlonape01:6969/janus/data" />
    </baseAddresses>
</host>

Другие вопросы по тегам