如果有人从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
上有属性,甚至是外部静态方法一个助手类可以做出那个决定呢?
答案 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
}