Удаленный доступ к самообслуживанию Нэнси

Я создаю модуль Nancy, который в конечном итоге будет размещен внутри службы Windows. В настоящее время я запускаю его внутри тестового приложения WPF. Чтобы запустить хостинг Nancy, я использую Nancy.Hosting.Self и вызываю:

nancyHost = new Nancy.Hosting.Self.NancyHost(new Uri("http://localhost:8080"));
nancyHost.Start();

На моей локальной машине я могу перейти в веб-браузер и получить доступ к моему модулю, введя http://localhost:8080 в адресную строку.

Если я перехожу на другую машину, я не могу получить доступ к этой службе. Мой брандмауэр Windows отключен.

Если я запустил хостинг с чем-то другим, кроме localhost в baseUri, я получаю исключение "access denied" при вызове nancyHost.Start();

Есть ли что-то, что мне не хватает? Должен ли я иметь доступ к модулю Nancy с любого компьютера, пока я знаю IP: порт для машины, выполняющей хостинг? Есть ли какой-либо тип "заголовка хоста", о котором мне нужно знать?

Спасибо за вашу помощь в этом.

Ответы

Ответ 1

Windows не позволит вам прослушивать порты без разрешения. Вы можете либо запустить ваш процесс как администратор, либо добавить разрешение с помощью "netsh":

netsh http add urlacl url = http://+: 8080/app user = domain\user

"+" является подстановочным знаком, поэтому он может прослушивать любой IP-адрес.

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

Ответ 2

Для локальной отладки используйте

http://+:8733/Design_Time_Addresses

Вы можете добавить любой подкаталог, который вам нравится, например

http://+:8733/Design_Time_Addresses/myService 

и отлаживайте его

http://localhost:8733/Design_Time_Addresses/myService

без запуска вашей среды IDE (Visual Studio?) в качестве администратора.

Ответ 3

Посмотрите: Self-Hosting-Nancy

Конфигурация хоста: UrlReservations, добавить под кодом:

var configuration = new HostConfiguration
        {
            UrlReservations = new UrlReservations { CreateAutomatically = true }
        };

ОК, вы можете создать свой хост! ~