Проблема префикса .NET HttpListener с чем-либо, кроме localhost - PullRequest
7 голосов
/ 02 апреля 2010

Я пытаюсь использовать C # и HttpListener с префиксом чего-либо, кроме localhost, и это терпит неудачу (то есть, если я даю ему server1, т.е.

http://localhost:1234 работает, но

http://server1:1234 не удается

Код ...

HttpListener listener = new HttpListener();
String prefix = @"http://server1:1234";
listener.Prefixes.Add(prefix);
listener.Start();

Ошибка происходит на listener.Start(), за исключением Access is denied..

Ответы [ 2 ]

8 голосов
/ 29 сентября 2013

Однажды у меня была такая же проблема, и я решил ее, добавив резервирование URL-адреса для указанного пространства имен URL-адреса для пользователя / пользователей в сетевой оболочке (netsh). Вот пример того, как зарезервировать URL для каждого пользователя, запустите его в командной строке от имени администратора:

netsh http add urlacl url=http://server1:1234/ user=Everyone

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

netsh http add urlacl url=http://server1:1234/ user=Steve

Таким образом, вам не нужно запускать приложение от имени администратора

3 голосов
/ 02 апреля 2010

Ваше приложение работает с повышенными привилегиями?

Обычные учетные записи не могут подключить конвейер Http без предварительного резервирования.

http://msdn.microsoft.com/en-us/library/Aa364673

Это можно сделать программно во время установки. Дайте мне знать, если это будет интересно, и я выкопаю некоторый код.

EDIT:

На самом деле, поскольку я не могу определить, откуда появился код, я не могу опубликовать его здесь. Есть проект codeplex для такого рода вещей , который определенно стоит выделить.

/ EDIT

Вот способ сделать резервирование в командной строке:

http://www.casadehambone.com/HowToAddAURLACLAndAvoidAddressAccessDeniedExceptionInWindowsVista.aspx

...