2013-05-04 35 views
1

我正在編寫一個應用程序在桌面計算機上進行部署,並使用ServiceStack將json服務公開給將佔用它們的中央應用程序。我正在使用ServiceStack自託管服務,並且幾乎只是跟隨ServiceStack維基例子來啓動和運行基本連接。動態IP地址桌面上的ServiceStack服務器

這是用來啓動服務器,並將其綁定

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

Windows還需要進行配置,以便非管理員可以接受傳入的請求;使用管理員命令提示符下的此命令

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

注意:這似乎很脆弱。如果appHost.Start(urlBase)命令中的urlBase與netsh命令中的urlacl參數不同,則Windows拒絕連接。順便說一句我只在Windows 8試過這個。

是否有一種替代方法,以便應用程序可以承受桌面計算機IP地址(例如由DHCP引起的變化)?

這是一個桌面環境,所以我不希望用戶爲他們的計算機設置主機名或靜態IP地址。我也試圖不要求他們在命令提示符下鍵入命令。

回答

1

它有點取決於中央應用程序如何在桌面計算機上定位應用程序。

如果您只有一個靜態IP地址列表,您將需要桌面具有靜態IP地址。

如果您的中央應用程序知道當前的IP地址是什麼(或者這可能在網絡中,您可以使用機器的名稱),請嘗試urlacl=http://+:port

這基本上設置一個通配符,說通過http這個端口進入這個應用程序的任何東西。

然後apphost.Start("http://locahost:port/")應該工作。