什么提琴手?为什么它可以通过打开和关闭来修复我的应用程序?

What fiddler do? Why can it fix my application through open and close?

这不是一个特定的问题,因为我有不止一次 fiddler 保存我的应用程序的经验。

最近的一个例子:

我有一个用 C# 编写的 excel 插件应用程序。在应用程序中,我有一个 httpclient 通过 ssl 连接到我的服务器。而且我在我的代码中明确忽略了认证。

该应用程序一直运行良好(我指的是连接部分),但有一天在 QA 环境中,它无缘无故地失败了。连接似乎被阻塞了很长时间。

巧合的是,我们打开了Fiddler,试图抓取一些http。然后一切正常。

(Fiddler may do something in the middle)

然后关闭 Fiddler 后,我们无法重现问题,因为一切都恢复正常了。

(Fiddler change something permanently!)

这里有一些线索:

  1. 我们使用普通的 C# http 客户端 System.Net.Http .
  2. 我们的服务器是ssl(https,但是我们必须忽略cert)
  3. 该应用一开始在相同环境下表现良好。
  4. 最近的变化是关于本地化的,测试环境改变了windows本地和语言。
  5. 我们在一个公司网络下,在上面的例子中使用代理。
  6. 失败的不是整个连接模块,而是一个特定的请求。(在我们的例子中,请求 post 两个小的 xml 文件,包括 excel 本身)

请给我们一些提示和猜测,这样我们才能更好地解决这个神秘的问题。

"long long time" 到底有多长?

Fiddler 不会对系统进行任何持久性更改;如果启动和停止它,系统将返回到先前的配置。我想如果某些配置设置在 Fiddler 运行 之前损坏,那么 远程 有可能在 Fiddler 尝试重新应用它后不会复制损坏,但我们不知道任何此类 "corrections."

This article 描述了人们在 Fiddler "magically" 运行时修复问题时发现的一些意想不到的事情。