我使用.NET WebRequest同时更改我的HOSTS文件。我发现System.Net并没有遵守这些更改 - 我该如何让它遵守呢?
我有多个服务器在单一主机名(example.com)后面进行负载平衡。我想要分别针对其中的几台服务器,所以我的程序将在向example.com发送请求之前,在我的HOSTS文件中硬编码特定于机器的IP地址:
使用断点和调试跟踪,我已经验证每次 HOSTS 文件中都写入了正确的值。当我尝试从浏览器或其他程序访问 example.com 时,它确实遵循 HOSTS 文件并转到第二个 IP 地址。
使用 NETMON 验证请求直接发送到显示的 IP 地址,没有 HTTP 代理。
由于其他一切都尊重更改后的 HOSTS 文件,我强烈怀疑 System.Net 基础结构缓存了 example.com 的 DNS 主机-IP 关联。然而,我找不到有关此缓存的参考,并且不知道如何清除它或关闭它。
我希望得到处理缓存的指示,对于可能导致这些症状的其他原因的建议,或者有用的其他诊断步骤的建议。
我有多个服务器在单一主机名(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 地址。使用断点和调试跟踪,我已经验证每次 HOSTS 文件中都写入了正确的值。当我尝试从浏览器或其他程序访问 example.com 时,它确实遵循 HOSTS 文件并转到第二个 IP 地址。
使用 NETMON 验证请求直接发送到显示的 IP 地址,没有 HTTP 代理。
由于其他一切都尊重更改后的 HOSTS 文件,我强烈怀疑 System.Net 基础结构缓存了 example.com 的 DNS 主机-IP 关联。然而,我找不到有关此缓存的参考,并且不知道如何清除它或关闭它。
我希望得到处理缓存的指示,对于可能导致这些症状的其他原因的建议,或者有用的其他诊断步骤的建议。