我有一个通过服务参考使用WCF服务的应用程序。我们正在进行一些故障测试,我们希望能够对服务本身进行建模失败,但在这种情况下无法停止服务。此外,这需要在应用程序运行时发生,并在连接恢复后恢复功能。
我已尝试过使用防火墙规则,但出于某种原因,如果它最初连接正常,那么之后它将继续保持良好连接状态。我认为这是因为它创建了一个初始连接,然后保持活着。
我想也许我可以更改hosts文件,但我遇到了同样的问题。它连接得很好,我更改主机(并确认它重定向像ping这样的东西),但应用程序继续连接正常。
我尝试了很多东西,比如ipconfig / flushdns。还有什么我可以做的吗?我考虑创建一个脚本来暂时中断出站连接并强制重新连接。问题是,如果我在机器上进行RDP,这可能会破坏我自己的连接!这是不可取的。
有没有办法让服务客户端尊重对Hosts文件的更改,让它尊重防火墙的更改,或者在不中断RDP的情况下轻松地暂时中断出站连接?
编辑:注意,连接使用Keep Alive
,这是我们无法改变的。此外,我们没有使用app.config
,因此我们也无法改变它。最后,我们无法在计算机上安装任何其他软件。一切都必须在操作系统内部才能完成。
答案 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。