无法使用外部 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 WildcardWeak Wildcard