WCF服务 - 调用重定向问题

时间:2014-10-30 08:32:58

标签: performance wcf

我们在IIS上托管了WCF服务。该服务接收请求并基于其中一个请求参数,它自己提供请求或将其重定向到其他服务器。重定向过程本质上是对另一个经典Web服务(asmx)的调用。

我们遇到的问题是当我直接调用asmx服务时,我们会在不到20毫秒内得到响应,但是当通过WCF服务调用相同时,响应时间会达到300毫秒。我的假设是,在从WCF服务调度到asmx服务之前,请求被搁置在某个地方(IIS)。我一直试图检查性能计数器,然而,看不到任何可以从中得出结论的计数器。我也检查了IIS日志,这也不是很有说服力。

我曾尝试从托管wcf服务的服务器ping托管asmx服务的服务器,只需3毫秒即可获得回复。

有没有什么方法可以让我得出通话中消耗额外时间的结论?

更新 - 我尝试使用Fiddler,它将响应时间缩短到20 ms apprx。如果我删除提琴手,响应时间会上升到200毫秒

从Framework 3.5调用时,在Framework 2.0中构建的服务是否有可能响应缓慢?

更新2 我们已将其缩小到代理问题。如果我们拒绝fiddler中的代理选项,则响应时间会增加。对WCF服务的调用是在basicHttpBinding上进行的,而basicHttpBinding又调用asmx服务。看起来Fiddler会缓存代理并在下次重用它。如果这种理解是正确的,有没有办法在我们的设置中实现类似的东西?

1 个答案:

答案 0 :(得分:0)

事实证明,我们的服务已将expect100Continue设为false。我们使用Wireshark检查了网络传输,结果显示,当请求结束时没有附加expect100Continue时,托管asmx服务的服务器会响应延迟。 更多关于expect100Continue在这里 - expect100Continue