Tag: system.net

如何清除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关联。 但是,我找不到对此缓存的引用,并且知道无法刷新或关闭它。 我欢迎处理缓存的说明,可能导致这些症状的其他建议,或其他可能有用的诊断步骤。

在运行时更新app.config system.net设置

我需要在运行时更新.Net exe app.config文件的system.net SectionGroup中的设置。 我没有在运行时对原始配置文件的写访问权限(我正在开发一个.Net dll加载项,它由我无法控制的应用程序提供的exe托管)所以我希望保存一份副本的文件,并在运行时用修改后的版本替换exe中的配置。 我尝试过以下但是没有用。 有什么建议? Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); NetSectionGroup netSectionGroup = config.GetSectionGroup(“system.net”) as NetSectionGroup; netSectionGroup.Settings.HttpWebRequest.UseUnsafeHeaderParsing = true; config.SaveAs(@”C:\ProgramData\test.config”, ConfigurationSaveMode.Full); AppDomain.CurrentDomain.SetData(“APP_CONFIG_FILE”, @”C:\ProgramData\test.config”);