使用Nancy是否可以启动主机0.0.0.0:端口?

9

我尝试使用Nancy Host启动IP为https://0.0.0.0:9000的主机,但出现了System - The request is not supported异常。以下是我的代码。

string strHostProtocol = "https";
string strHostIP = "0.0.0.0";
string strHostPort = "9000";

var url = strHostProtocol + "://" + strHostIP + ":" + strHostPort;
this.host = new NancyHost(new Uri(url));
this.host.Start();

这将使我能够启动其他IP地址,如127.0.0.1:9000, 192.168.100.10:9000等等,但不能启动0.0.0.0:9000。我读到过这是一个有效的IP地址,但我的问题是为什么不能启动它?这个IP是否被保留用于某些目的? 更新 此处的唯一目的是,我正在尝试通过提供的公共IP访问内部IP。但是即使Nancy使用端口启动内部IP,在通过公共IP提供请求时,它也无法识别。不确定是否可以实现这一点。

@ʞaʎess.. 我正在尝试这样做,因为我已经将系统的IP设置为公共IP,并使用9000端口启动了本地IP。我可以通过公共IP telnet到该端口,但是我无法通过互联网浏览相同的内容。我听说使用0.0.0.0开头会有帮助... - Guruprasad J Rao
2
你的意思是想将 Nancy 绑定到所有接口,就像本地主机分配的每个可能的 IP 地址一样吗?如果是这样,你可以尝试用通配符 "+" 替换 "0.0.0.0"。 - kayess
根据文档,它将被重写为 http://+:9000/,这是真的。 - wimh
我的意图是,我正在尝试通过提供的公共IP访问内部IP。但是,即使Nancy使用端口启动内部IP,当通过公共IP提供请求时,它也无法识别。我不知道该如何实现这一点。 - Guruprasad J Rao
1
如果您使用某种类型的NAT,您的主机将在内部IP上接收请求,甚至不知道原始请求是发送到公共IP的。如果您不使用NAT,Windows可能会阻止该请求,至少ARP将无法工作。也许您可以使用Wireshark检查是否收到任何内容? - wimh
显示剩余7条评论
1个回答

9
我想出了方法:
HostConfiguration hostConf = new HostConfiguration();
hostConf.RewriteLocalhost = true;
var apiHost = new NancyHost(hostConf, new Uri("http://localhost:8080"));
apiHost.Start();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接