确定主机是否已解析DNS名称或IP

时间:2015-10-10 13:08:52

标签: c# .net dns ip httprequest

如果有人从HOST的{​​{1}} HttpContext集合中提取HttpRequest值,是否有办法确定是否返回的值是DNS解析名称还是直接IP地址?

使用示例

Headers

摘要

很明显,人们可以对结果进行正则表达式模式测试以查找IP模式,但 string host = HttpContext.Current.Request.Headers["HOST"]; if (host.IsIPAddress()) ... /// Something like this ? or (host.IsDNSResolved()) // Or this? 或更可能HttpContext上有属性,甚至是外部静态方法一个助手类可以做出那个决定呢?

1 个答案:

答案 0 :(得分:7)

您可以利用System.Net.IPAddress.TryParse Method (String, IPAddress)并创建扩展方法来执行所需的功能。

public static class IpAddressExtension {
    public static bool IsIPAddress(this string ipAddress) {
        System.Net.IPAddress address = null;
        return System.Net.IPAddress.TryParse(ipAddress, out address);
    }
}

现在允许以下

string host = System.Web.HttpContext.Current.Request.Headers["HOST"];

if (host.IsIPAddress()) {
    //...valid ip address
}