如何刷新 WCF HTTP 连接的缓存主机文件

问题描述 投票:0回答:1

我有一个使用 WCF HTTPS 连接的服务器和客户端应用程序。它们都使用证书,因此客户端需要使用 DNS 来连接到服务器。

在“C:\Windows\System32\drivers tc”下的系统主机文件中,正确存在将 DNS 名称映射到服务器 IP 地址的条目。

客户端应用程序是一对多的,这意味着它允许用户输入服务器的 IP 地址并创建连接。客户端应用程序隐式更新系统主机文件中与此 DNS 相关的行以包含此 IP 地址,并将 DNS 传递到连接。

这一切在不同系统上的任何服务器上都可以正常工作,首次启动应用程序时也不会出现问题。它将更新主机文件并正确连接到任何服务器。

我遇到的问题是,当断开连接然后重新连接到不同的 IP 地址时,连接将继续在客户端连接到此客户端应用程序实例的第一个 IP 地址上建立。

主机文件正在更新,新 IP 地址没有出现问题,但由于某种原因,连接仍然连接到原始 IP 地址。 再一次,当重新启动客户端并输入不同的 IP 地址时,这一切都会起作用。当尝试在客户端的单个实例下断开/重新连接时,似乎正在为 WCF 连接缓存某些内容。

有人遇到过这个问题吗?有谁知道如何刷新 WCF 连接可能存在的任何类型的缓存?

c# ssl wcf https dns
1个回答
0
投票

尝试以下操作:

1.您可以尝试禁用WCF的keepalive。这样,您就不会重复使用已建立的连接。这段代码放在WCF配置代码上。

HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();
  httpTransport.KeepAliveEnabled = false;

2.设置DNS缓存的过期时间

<system.net>
  <settings>
    <servicePointManager expect100Continue="false" useNagleAlgorithm="false" dnsRefreshTimeout="10000" />
  </settings>
</system.net>

3.使用控制台清除缓存。

ipconfig /flushdns
© www.soinside.com 2019 - 2024. All rights reserved.