无法使用外部 IP 访问 Nancy 创建的主机
Unable to access host created by Nancy using external IP
我正在创建一个最终将托管在 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 浏览主机。 Nancy 有什么限制吗?防火墙被关闭,防御者被关闭。有人对此有任何想法吗?
更新
重复的链接问题是关于 LAN 的,但我在这里尝试通过外部 IP,我已经尝试过那里提到的答案,并在问题中指定了相同的答案
好的。这个问题也发布到 GitHub Nancy Repo
下面是@Khellang 不得不说的。
When you bind to https://192.168.100.88:9003
, the
TcpListener/HttpListener won't listen on other interfaces. You either
have to bind to https://208.91.158.66:9003
or https://localhost:9003
and set RewriteLocalhost = true (default).
他还说
If you also want to listen to requests coming to the external IP, yes.
Or you could use a wildcard, like https://+:9003/
, https://*:9003/
or
https://localhost:9003/
(with RewriteLocalhost = true, this will
result in https://+:9003/
). You can read more about them in the link I
posted.
感谢@TimBourguignon,他在评论中提出了同样的建议。希望这对以后的人有帮助。
他还建议阅读 this link
以了解更多关于 Strong Wildcard
和 Weak Wildcard
我正在创建一个最终将托管在 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 浏览主机。 Nancy 有什么限制吗?防火墙被关闭,防御者被关闭。有人对此有任何想法吗?
更新
重复的链接问题是关于 LAN 的,但我在这里尝试通过外部 IP,我已经尝试过那里提到的答案,并在问题中指定了相同的答案
好的。这个问题也发布到 GitHub Nancy Repo
下面是@Khellang 不得不说的。
When you bind to
https://192.168.100.88:9003
, the TcpListener/HttpListener won't listen on other interfaces. You either have to bind tohttps://208.91.158.66:9003
orhttps://localhost:9003
and set RewriteLocalhost = true (default).
他还说
If you also want to listen to requests coming to the external IP, yes. Or you could use a wildcard, like
https://+:9003/
,https://*:9003/
orhttps://localhost:9003/
(with RewriteLocalhost = true, this will result inhttps://+:9003/
). You can read more about them in the link I posted.
感谢@TimBourguignon,他在评论中提出了同样的建议。希望这对以后的人有帮助。
他还建议阅读 this link
以了解更多关于 Strong Wildcard
和 Weak Wildcard