Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IPAddress.Parse(“localhost”)引发错误_C# - Fatal编程技术网

C# IPAddress.Parse(“localhost”)引发错误

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

我有一个服务,它接受一个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 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
属性并将其排除。