使用创建HttpListener对象时
var server = new HttpListener();
server.Prefixes.Add("http://*:8080/");
server.Start();
Run Code Online (Sandbox Code Playgroud)
一切正常。但是,当我使用
var server = new HttpListener();
server.Prefixes.Add("http://demindiro.com:8080/");
server.Start();
Run Code Online (Sandbox Code Playgroud)
它抛出System.Net.Sockets.SocketException (0x80004005): The requested address is not valid in this context(下面的完整堆栈跟踪)。
在查询了异常之后,很明显它与所使用的地址有关。在探究HttpListener和EndPointManager的Mono源代码之后,我确定问题可能出在代码的这一部分(位于GetEPListener处):
static EndPointListener GetEPListener (string host, int port, HttpListener listener, bool secure)
{
IPAddress addr;
if (host == "*")
addr = IPAddress.Any;
else if (IPAddress.TryParse(host, out addr) == false){
try {
#pragma warning disable 618
IPHostEntry iphost = Dns.GetHostByName(host);
#pragma …Run Code Online (Sandbox Code Playgroud)