2013-05-04 37 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/")应该工作。