1

我正在编写一个部署在桌面计算机上的应用程序,并使用 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 地址。我也试图不要求他们在命令提示符下输入命令。

4

1 回答 1

1

这有点取决于中央应用程序如何在台式计算机上定位应用程序。

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

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

这基本上设置了一个通配符,表示通过此端口进入的任何内容都http将转到此应用程序。

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

于 2013-05-09T20:54:49.867 回答