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