C# HttpListener 异常:指定网络名称的格式无效
C# HttpListener exception: The format of the specified network name is not valid
我正在使用此示例代码来侦听 HTTP 请求:
// Create a listener.
HttpListener listener = new HttpListener();
// Add the prefixes.
listener.Prefixes.Add("some URI");
listener.Start();
Console.WriteLine("Listening...");
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
listener.Stop();
但是我很难过,因为我不知道前缀应该是什么。我已经阅读了这方面的文档,但是无论我尝试在那里输入什么,无论是我的计算机的 URI 还是我希望得到响应的机器的 URI,我总是会遇到异常:
The format of the specified network name is not valid
我尝试了多种方法,其中之一是我指定了我自己 PC 的 URI,但出现无法访问这些位置的异常。越研究越迷路
在 HttpListener
的 MSDN 示例中,我看到 URI 应该也有一个端口,但如果它必须是我正在收听的外部机器的 URI,那么我怎么知道端口?
此外,我在防火墙中打开了端口(使用 Windows 工具,而不是指挥官)。我什至关闭了 Windows 防火墙,但没有任何改变。
我对网络的了解非常有限,所以我什至不知道我应该问的确切问题。
我尝试了相关帖子的提示,例如:
但没有任何帮助。
例如使用:
listener.Prefixes.Add("http://*:9998/");
listener.Prefixes.Add("https://*:9999/");
如果您使用 * 侦听器将绑定到所有接口。您需要 运行 作为管理员才能注册。
现在,如果您 运行 这个程序在配置了 IP 的主机上运行,例如 192.168.178.39
您应该使用以下方式连接:
http://192.168.178.39:9998
https://192.168.178.39:9999
要使 SSL 正常工作,您需要使用以下命令:
netsh http 添加 sslcert ipport=0.0.0.0:9999 certhash=Thumbprint appid={GUID}
In the MSDN example on HttpListener I see that URI supposed to have
also a port, but if it has to be the URI of external machine I am
listening to, then how can I know the port?
在那种情况下,您应该使用默认端口 http 80 或 https 443。您将需要使用本地 IP,尽管在机器上前缀做 NOT 指定外部知识产权。
如果网络有 NAT,则配置防火墙以允许端口 443 和 80 上的流量到达所需的主机。
现在您可以使用外部 IP 和默认端口进行连接。
我正在使用此示例代码来侦听 HTTP 请求:
// Create a listener.
HttpListener listener = new HttpListener();
// Add the prefixes.
listener.Prefixes.Add("some URI");
listener.Start();
Console.WriteLine("Listening...");
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
listener.Stop();
但是我很难过,因为我不知道前缀应该是什么。我已经阅读了这方面的文档,但是无论我尝试在那里输入什么,无论是我的计算机的 URI 还是我希望得到响应的机器的 URI,我总是会遇到异常:
The format of the specified network name is not valid
我尝试了多种方法,其中之一是我指定了我自己 PC 的 URI,但出现无法访问这些位置的异常。越研究越迷路
在 HttpListener
的 MSDN 示例中,我看到 URI 应该也有一个端口,但如果它必须是我正在收听的外部机器的 URI,那么我怎么知道端口?
此外,我在防火墙中打开了端口(使用 Windows 工具,而不是指挥官)。我什至关闭了 Windows 防火墙,但没有任何改变。
我对网络的了解非常有限,所以我什至不知道我应该问的确切问题。
我尝试了相关帖子的提示,例如:
但没有任何帮助。
例如使用:
listener.Prefixes.Add("http://*:9998/");
listener.Prefixes.Add("https://*:9999/");
如果您使用 * 侦听器将绑定到所有接口。您需要 运行 作为管理员才能注册。
现在,如果您 运行 这个程序在配置了 IP 的主机上运行,例如 192.168.178.39
您应该使用以下方式连接:
http://192.168.178.39:9998
https://192.168.178.39:9999
要使 SSL 正常工作,您需要使用以下命令:
netsh http 添加 sslcert ipport=0.0.0.0:9999 certhash=Thumbprint appid={GUID}
In the MSDN example on HttpListener I see that URI supposed to have also a port, but if it has to be the URI of external machine I am listening to, then how can I know the port?
在那种情况下,您应该使用默认端口 http 80 或 https 443。您将需要使用本地 IP,尽管在机器上前缀做 NOT 指定外部知识产权。
如果网络有 NAT,则配置防火墙以允许端口 443 和 80 上的流量到达所需的主机。 现在您可以使用外部 IP 和默认端口进行连接。