C# IPAddress.Parse(“localhost”)引发错误
我有一个服务,它接受一个ip字符串并尝试将其解析为C# IPAddress.Parse(“localhost”)引发错误,c#,C#,我有一个服务,它接受一个ip字符串并尝试将其解析为IPAdress。一些外部服务可能传入127.0.0.1,但也有一些传入localhost,这会导致问题 第一个有效,但第二个抛出错误 try { var foo = IPAddress.Parse("127.0.0.1"); } catch { Console.WriteLine("parsing failed for foo"); } try { var
IPAdress
。一些外部服务可能传入127.0.0.1
,但也有一些传入localhost
,这会导致问题
第一个有效,但第二个抛出错误
try
{
var foo = IPAddress.Parse("127.0.0.1");
}
catch
{
Console.WriteLine("parsing failed for foo");
}
try
{
var bar = IPAddress.Parse("localhost");
}
catch
{
Console.WriteLine("parsing failed for bar");
}
我是否必须检查ip字符串是否等于
localhost
,或者我是否可以使用它?如果要解析主机名和ip地址,可以将其中一个传递给
作为回报,这将为您提供一个可能的IP地址列表(如果传递了主机名)或一个IP地址列表(如果传递了IP地址)如果要解析主机名和IP地址,您可以传递到
作为回报,这将为您提供一个可能的IP地址列表(如果传递了主机名)或一个IP地址列表(如果传递了IP地址)
localhost
不是IP地址。。。。为什么不检查一下这种特殊情况(例如,if(string.Equals(ip,“localhost”,StringComparison.InvariantCultureIgnoreCase)){ip=“127.0.0.1”;}
)这就是为什么我要问:)Localhost在以下文件中定义,并且在每台计算机上可以不同:C:\Windows\System32\drivers\etc\hosts。Localhost
不是IP地址。。。。为什么不检查一下这种特殊情况(例如,if(string.Equals(ip,“localhost”,StringComparison.InvariantCultureIgnoreCase)){ip=“127.0.0.1”}
)?这就是为什么我要问:)localhost在下面的文件中定义,并且在每台机器上可以不同:C:\Windows\System32\drivers\etc\hosts。谢谢,但这对我不起作用,我尝试了以下代码`IPHostEntry IPHostEntry=Dns.GetHostEntry(ipString);//来自外部服务的任何ip字符串,例如“localhost”IPAddress[]ipAddresses=ipHostEntry.AddressList;//计数是2。第二个是127.0.0.1 IPAddress IPAddress=IPAddresss.First();//{::1}//Ip地址将类似于http://[::1]:1234`@Olaf如果您的反对是IPv6地址,您可以检查AddressFamily
属性并排除它们。谢谢,但这对我不起作用,我尝试了以下代码`IPHostEntry IPHostEntry=Dns.GetHostEntry(ipString);//来自外部服务的任何ip字符串,例如“localhost”IPAddress[]ipAddresses=ipHostEntry.AddressList;//计数是2。第二个是127.0.0.1 IPAddress IPAddress=IPAddresss.First();//{::1}//Ip地址类似于http://[::1]:1234`@Olaf如果您的反对是IPv6地址,您可以检查AddressFamily
属性并将其排除。