Сервер ServiceStack на рабочем столе с динамическим IP-адресом

Я пишу приложение для развертывания на настольных компьютерах и использую ServiceStack для предоставления услуг json центральному приложению, которое будет их использовать. Я использую самостоятельный хостинг ServiceStack, и я просто следил за примерами вики ServiceStack, чтобы установить и запустить базовое подключение.

Это используется для запуска сервера и его привязки.

appHost.Init();
appHost.Start("http://server_ip:port/");

Windows также необходимо настроить так, чтобы неадминистратор мог принимать входящие запросы; с помощью этой команды из командной строки администратора

netsh http add urlacl=http://server_ip:port/ user=desktopMachineName\desktopUserName listen=yes

примечание: это кажется хрупким. Если urlBase в команде appHost.Start(urlBase) отличается от параметра urlacl в команде netsh, Windows отклоняет подключения. Кстати, я пробовал это только с Windows 8.

Есть ли альтернативный подход, чтобы приложение могло выдерживать изменения IP-адреса настольных компьютеров (например, вызванные DHCP)?

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


person Ty Newton    schedule 04.05.2013    source источник


Ответы (1)


Это зависит от того, как центральное приложение находит приложения на настольных компьютерах.

Если у вас есть только список статических IP-адресов, вам потребуется, чтобы рабочие столы имели статические IP-адреса.

Если каким-то образом ваше центральное приложение знает текущий IP-адрес (или, может быть, он находится в сети, и вы можете использовать имя машины), попробуйте urlacl=http://+:port.

По сути, это устанавливает подстановочный знак, говорящий, что все, что приходит на этот порт через http, идет в это приложение.

Тогда apphost.Start("http://locahost:port/") должно работать.

person Master Morality    schedule 09.05.2013