Tag: hosts file

我可以暂时覆盖.NET应用程序中的DNS解析吗?

我有一些包装代码,它运行一组NUnit测试,扫描实时网站以获取某些响应代码。 我想针对不同的服务器运行这些测试。 手动运行时,我可以通过编辑Windows \ System32 \ drivers中的/ etc / hosts文件并暂时将www.mysite.com设置为10.0.0来执行此操作。 有什么方法可以在.NET控制台应用程序中做同样的事情 – 暂时覆盖DNS记录或以某种方式拦截分辨率并返回不同的IP地址? 编辑:这用于测试Web场中的多个服务器。 我有三个实时服务器,所有这些都认为它们是www.example.com。 因为服务器使用HTTP主机头,我不能只针对server1,然后是server2,然后是server3运行测试,因为对http:// server1 /的HTTP请求不会返回与http://请求相同的内容。 www.example.com/已经解决了server1 …

确定域名在“hosts”文件中是否有效的最佳方法是什么?

Windows Hosts文件允许您将IP与主机名相关联,该主机名具有比普通Internet域名更大的自由度。 我想创建一个函数来确定给定的名称是否是有效的“主机”文件域名。 根据这个有效和无效的答案和实验,我想出了这个function: private static bool IsValidDomainName(string domain) { if (String.IsNullOrEmpty(domain) || domain.Length > 255) { return false; } Uri uri; if (!Uri.TryCreate(“http://” + domain, UriKind.Absolute, out uri)) { return false; } if (!String.Equals(uri.Host, domain, StringComparison.OrdinalIgnoreCase) || !uri.IsWellFormedOriginalString()) { return false; } foreach (string part in uri.Host.Split(‘.’)) { if (part.Length > 63) { return […]

如何清除System.Net客户端DNS缓存?

我在更改我的HOSTS文件时使用的是.NET WebRequest。 我观察到System.Net不尊重这些变化 – 我怎么能这样做呢? 我在一个主机名后面有许多负载均衡的服务器,比方说’example.com’。 我想单独定位其中几个,所以我的程序会在向example.com发送请求之前在我的HOSTS文件中硬编码机器特定的IP地址: 163.56.0.34 example.com 对于第一个服务器和第一个请求,这很好。 然后我的程序再次更改HOSTS文件: 163.56.0.48 example.com 我创建了一个新的HttpWebRequest。 当我发送这个时,我可以在NETMON中观察到它转到第一个IP地址(163.56.0.34)而不是预期的第二个IP地址。 使用断点和调试跟踪,我已经validation每次都将正确的值写入HOSTS文件。 当我尝试从浏览器或其他程序访问example.com时,它确实尊重HOSTS文件并转到第二个IP地址。 使用NETMON我已经validation了请求是直接进入显示的IP地址; 没有HTTP代理。 由于其他一切都是为了兑现已更改的HOSTS文件,因此我强烈怀疑System.Net基础结构已缓存example.com的DNS主机-IP关联。 但是,我找不到对此缓存的引用,并且知道无法刷新或关闭它。 我欢迎处理缓存的说明,可能导致这些症状的其他建议,或其他可能有用的诊断步骤。