无法使用外部IP访问Nancy创建的主机

时间:2016-04-18 10:40:05

标签: c# nancy

我正在创建一个最终将在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,我尝试了那里提到的答案,并指出了相同的问题

1 个答案:

答案 0 :(得分:1)

好的。此问题也发布到 GitHub Nancy Repo ,以下是@Khellang所说的内容。

  

绑定到https://192.168.100.88:9003时,   TcpListener / HttpListener不会侦听其他接口。你要么   必须绑定到https://208.91.158.66:9003https://localhost:9003   并设置RewriteLocalhost = true(默认值)。

他还说了

  

如果您还想收听来自外部IP的请求,是的。   或者您可以使用通配符,例如https://+:9003/https://*:9003/或   https://localhost:9003/ RewriteLocalhost = true ,这会   结果为https://+:9003/)。您可以在链接I中阅读更多相关信息   帐。

感谢@TimBourguignon,他在评论中提出了同样的建议。希望这有助于将来。

他还建议阅读 this link ,详细了解Strong WildcardWeak Wildcard