为什么 VB 对 WCF 的脚本调用仅在 Fiddler 运行时有效

Why VB Script call to WCF works only when Fiddler is running

我有这种奇怪的行为,我就是想不通。我有一个非常简单的 VB 脚本,它使用 SoapClient 并与 WCF 端点对话。请看下面。

Dim oPPWS As Object
Set oPPWS = CreateObject("MSSOAP.SoapClient30")

Const URL = "http://localhost:57660/Service1.svc?wsdl"
oPPWS.MSSoapInit URL

Dim strResp As String
strResp = oPPWS.GetData()

Fiddler 为 运行 时,此代码“”完美运行。否则我会在 oPPWS.MSSoapInit URL

上收到以下错误

"WSDLReader:XML Parser failed at linenumber 0, lineposition 0, reason is: The download of the specified resource has failed. HRESULT=0x1: Incorrect function. - WSDLReader:Loading of the WSDL file failed HRESULT=0x80070057: The parameter is incorrect."

我认为 Fiddler 充当 WCF 调用的代理并使其以某种方式连接到服务。 但我只是不知道/无法确切解释原因。有没有人见过这个?还有没有办法让这段代码在没有这种行为的情况下工作?

我也在 Windows 8.运行

谢谢。

终于搞清楚了。 这是我的 IE 代理设置导致它无法工作。一旦我关闭了 IE 代理设置,无论是否打开了 Fiddler,上面的脚本都有效。 我认为 Fiddler 会忽略 IE 代理设置?可能是,但我不知道。

我发现这个问题的方法是使用 Wireshark 它显示请求失败,因为代理访问 ID 被拒绝

白花了几个小时,希望这能为其他人节省时间:)