我正在创建一个最终将在Windows服务中托管的Nancy模块。为了开始Nancy托管,我正在使用Nancy.Hosting.Self。下面是启动Nancy主机的代码。
string strHostProtocol = Convert.ToString(ConfigurationManager.AppSettings["HostProtocol"]);
string strHostIP = Convert.ToString(ConfigurationManager.AppSettings["HostIP"]);
string strHostPort = Convert.ToString(ConfigurationManager.AppSettings["HostPort"]);
//Here strHostProtocol="https", strHostIP = "192.168.100.88" i.e. System IPv4, strHostPort = "9003"
var url = strHostProtocol + "://" + strHostIP + ":" + strHostPort;
//url ="https://192.168.100.88:9003"
this.host = new NancyHost(new Uri(url));
this.host.Start();
现在,一旦Windows服务启动,它将启动上述主机,我可以在netstat -a
命令中看到这一点。当我使用 https://192.168.100.88:9003
在浏览器中浏览时,我会得到正确的回复。
使用外部IP浏览同一问题时会出现问题。假设此系统已被分配了208.91.158.66
的外部IP,当我尝试将其作为 https://208.91.158.66:9003
进行浏览时,我将继续获得浏览器默认加载进度,该进度不会停止和没有抛出任何错误。我还成功添加了以下命令和保留URL。
netsh http add urlacl url=https://192.168.100.88:9003/ user=everyone
但即使在此之后,也无法使用分配给该系统的外部IP浏览主机。南希有没有限制?防火墙已关闭,防御者已关闭。有人对此有任何想法吗?
更新
重复的链接问题谈到局域网,但在这里我正在尝试通过外部IP,我尝试了那里提到的答案,并指出了相同的问题
答案 0 :(得分:1)
好的。此问题也发布到 GitHub Nancy Repo
,以下是@Khellang所说的内容。
绑定到
https://192.168.100.88:9003
时, TcpListener / HttpListener不会侦听其他接口。你要么 必须绑定到https://208.91.158.66:9003
或https://localhost:9003
并设置RewriteLocalhost = true(默认值)。
他还说了
如果您还想收听来自外部IP的请求,是的。 或者您可以使用通配符,例如
https://+:9003/
,https://*:9003/
或https://localhost:9003/
( RewriteLocalhost = true ,这会 结果为https://+:9003/
)。您可以在链接I中阅读更多相关信息 帐。
感谢@TimBourguignon,他在评论中提出了同样的建议。希望这有助于将来。
他还建议阅读 this link
,详细了解Strong Wildcard
和Weak Wildcard