Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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# 通过DNS.GetHostEntry将IP地址转换为主机名_C#_Asp.net_Dns - Fatal编程技术网

C# 通过DNS.GetHostEntry将IP地址转换为主机名

C# 通过DNS.GetHostEntry将IP地址转换为主机名,c#,asp.net,dns,C#,Asp.net,Dns,我试图通过传入ip地址来获取主机名。我使用以下代码 System.Net.Dns.GetHostEntry("192.168.x.x").HostName 对于某些主机,上面的代码正确返回主机名,但对于少数其他主机,它抛出异常“找不到这样的主机” 有谁能告诉我为什么有些主持人会这样 我在asp.net mvc应用程序中使用了上述代码。并非所有IP都使用反向DNS条目正确设置。这些IP通常是懒惰ISP上的终端消费者,他们不为客户提供PTR记录。如果没有反向进入,你可以打赌也没有正向进入。因此,这

我试图通过传入ip地址来获取主机名。我使用以下代码

System.Net.Dns.GetHostEntry("192.168.x.x").HostName
对于某些主机,上面的代码正确返回主机名,但对于少数其他主机,它抛出异常“找不到这样的主机”

有谁能告诉我为什么有些主持人会这样


我在asp.net mvc应用程序中使用了上述代码。

并非所有IP都使用反向DNS条目正确设置。这些IP通常是懒惰ISP上的终端消费者,他们不为客户提供
PTR
记录。如果没有反向进入,你可以打赌也没有正向进入。因此,这些主机根本没有主机名,因此是例外。您需要捕获这些主机的此异常,并使用其他内容(如其IP)作为标识符。

我使用的是
Dns.GetHostByAddress
,即使它抱怨被贬值。(VS2010目标为3.5)

Dns.GetHostEntry
如果无法访问目标主机,即使Dns知道主机名,也会引发异常。除了使用折旧方法外,似乎没有任何.NET方法可以解决此问题:\


(编辑:虽然上面的答案也是正确的-有些机器没有主机名。我的答案是,如果你知道它应该有主机名,但是
GetHostEntry
不起作用)

@Bhaskar:这就是问题所在,不是每个IP都有主机名。通常,这些案例是ISP上的最终用户,他们的反向
PTR
记录很慢。你真正想解决的问题是什么?几乎所有主机名的使用都可以通过一个IP地址来满足。我试图找到请求来自的客户机名称。我正在从请求头获取客户端ip。@Bhaskar:那么您就陷入了我上面描述的问题。这些主机没有主机名,它们的IP是标识符的下一个最佳匹配。为什么所有IP都没有使用反向DNS条目正确设置?这是手动完成的吗?@Bhaskar DNS是手动设置的,有时会在防火墙中被阻止。如果是内部网,请与您的系统管理员确认您有DNS服务器,并且可以从您拨打此电话的服务器访问该服务器。尝试在web服务器上运行
ping-a 192.168.x.x
,以确保它能够解析IP。