【问题标题】:Fiddler doesn't capture traffic with "GetAsync"Fiddler 不使用“GetAsync”捕获流量
【发布时间】:2019-09-10 13:48:29
【问题描述】:

我正在尝试调试从 .net 472 应用程序对我的 ServiceStack Web 服务的调用。 Fiddler 一直是在我的其他针对相同服务的应用程序中检查流量的明显选择。

奇怪的是,当使用 JsonServiceClient 的 GetAsync() 方法时,我无法让 Fiddler 捕获任何流量。该调用按预期返回数据而没有问题,只是没有在 Fiddler 中跟踪:

var response = await client.GetAsync(new AroCodesRequest()); 

但是,如果我使用 Get() 方法,Fiddler 会按预期捕获流量:

var response = client.Get(new AroCodesRequest()); 

(编辑)将以下内容添加到 App.config 没有帮助:

  <system.net>
    <defaultProxy>
      <proxy proxyaddress="http://127.0.0.1:8888" bypassonlocal="False" />
    </defaultProxy>
  </system.net>

我已将 Fiddler 置于故障排除模式,但仍然没有运气。我一直无法在 Google/SO 上找到很多有用的信息,我怀疑我可能根本没有问正确的问题。

更新 从 ServiceStack 5.6.0 降级到 5.5.0 导致 Fiddler 再次捕获流量。我猜这与 5.6.0 发行说明中的​​这一行有关 - https://docs.servicestack.net/releases/v5.6#service-clients-async-webproxy - 我不完全理解发生了什么,我会继续关注它。

【问题讨论】:

  • 异步操作不能保证在你调用它们的那一刻执行,因此得名。它们保证最终执行,但在最终执行之前调试应用程序和中断执行可能是您的问题。你能在 GetAsync 周围显示更多代码吗?
  • @GuillaumeCR 帖子已被编辑
  • 嗯,看起来您的客户端类是专有代码。其实现中可能存在错误。尝试使用 .Net http 客户端,看看是否会得到不同的结果。

标签: c# servicestack fiddler visual-studio-2019


【解决方案1】:

在 v5.6 中,AsyncServiceClient 使用在 ServiceClient 上配置的代理,以前它没有。但是即使没有配置它,它也使用了代理,这看起来会导致这个问题,将其设置为null 似乎会在您的 Web.config 中取消设置代理配置。

我已将其更改为仅在 this commit 中配置了代理时才使用代理。

此更改从 v5.6.1 开始可用,现在为 available on MyGet

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多