Удаленный доступ к самообслуживанию Нэнси
Я создаю модуль 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 }
};
ОК, вы можете создать свой хост! ~