WCF服务客户端忽略主机文件和防火墙更改

时间:2016-05-20 19:28:36

标签: c# windows wcf windows-server service-reference

我有一个通过服务参考使用WCF服务的应用程序。我们正在进行一些故障测试,我们希望能够对服务本身进行建模失败,但在这种情况下无法停止服务。此外,这需要在应用程序运行时发生,并在连接恢复后恢复功能。

我已尝试过使用防火墙规则,但出于某种原因,如果它最初连接正常,那么之后它将继续保持良好连接状态。我认为这是因为它创建了一个初始连接,然后保持活着。

我想也许我可以更改hosts文件,但我遇到了同样的问题。它连接得很好,我更改主机(并确认它重定向像ping这样的东西),但应用程序继续连接正常。

我尝试了很多东西,比如ipconfig / flushdns。还有什么我可以做的吗?我考虑创建一个脚本来暂时中断出站连接并强制重新连接。问题是,如果我在机器上进行RDP,这可能会破坏我自己的连接!这是不可取的。

有没有办法让服务客户端尊重对Hosts文件的更改,让它尊重防火墙的更改,或者在不中断RDP的情况下轻松地暂时中断出站连接?

编辑:注意,连接使用Keep Alive,这是我们无法改变的。此外,我们没有使用app.config,因此我们也无法改变它。最后,我们无法在计算机上安装任何其他软件。一切都必须在操作系统内部才能完成。

2 个答案:

答案 0 :(得分:0)

1)您可以使用Fiddler并拦截客户端的连接。请注意,您应该在运行客户端的帐户下运行Fiddler。可能这是你应该去的方式。

2)或者您可以尝试修复当前的方法。正如您所描述的行为,它可能有助于禁用“保持活动”。请参阅here的说明:

  

打开IIS管理器并导航到要管理的级别。在   功能查看,双击HTTP响应标头。在HTTP上   “响应标题”页面的“操作”窗格中,单击“设置公共标题”。   在“设置常见HTTP响应标头”对话框中,选择“禁用”   HTTP保持活动复选框,然后单击“确定”。注意:这将禁用   IIS下的所有进程的HTTP保持活动,而不仅仅是一个   一个虚拟目录。

     

此致

     

M.R.ASHWINPRABHU

但是使用防火墙规则似乎不太方便,只能使用Fiddler。

答案 1 :(得分:0)

下载&从Sysinternals运行TCPView。它不需要安装。 在那里,您将看到进程列表。只需右键点击YourAppName.exe进程Remote Address = YourServerNameOrIP,然后点击关闭连接。您可能会找到其他灵感in answers to this question

您必须在WCF通信处于活动状态的同时执行此操作,然后您应该收到此异常:

  

套接字连接已中止。这可能是由错误引起的   处理您的消息或超过接收超时   远程主机或底层网络资源问题。本地套接字   超时为“{0}”。

关闭与TCPView的连接后,阻止防火墙规则应该适用于新连接。

如果您需要脚本,请检查this answer