动态IP地址桌面上的ServiceStack服务器

时间:2013-05-04 03:59:10

标签: servicestack netsh

我正在编写一个用于在台式计算机上部署的应用程序,并使用ServiceStack将json服务公开给将使用它们的中央应用程序。我正在使用ServiceStack自托管,我几乎只是跟着ServiceStack wiki示例来启动和运行基本连接。

这用于启动服务器并将其绑定

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 个答案:

答案 0 :(得分:1)

这有点取决于中央应用程序如何在桌面计算机上找到应用程序。

如果您只有静态IP地址列表,则需要桌面具有静态IP地址。

如果您的中央应用程序知道当前的IP地址是什么(或者可能是在网络中并且您可以使用机器的名称),那么请尝试urlacl=http://+:port

这基本上设置了一张外卡,表示通过http进入此端口的任何内容都会转到此应用。

然后apphost.Start("http://locahost:port/")应该有用。