在本地调用wcf服务比在不同机器上调用IIS上托管的WCF服务花费更多时间

时间:2017-07-26 10:59:07

标签: wcf iis-7 localhost castle-windsor tcpclient

我使用TCP协议在IIS上托管的服务器端使用WCF服务,并使用winforms客户端应用程序来调用该服务。

我也使用Caslte windsor进行DI和WCF代理创建。

var rpt1 = Windsor.Container.Resolve<IReportService>();
var data = rpt1.GetModules();

问题是当我将我的服务托管在不同机器上的IIS上时(即使在不同的地理位置),返回数据所需的时间也非常短。

出于测试和开发目的,我创建了基于小型控制台的应用程序来在本地托管WCF。

现在我遇到的问题是当客户端向本地托管服务器发送请求时,在服务器代码库中命中VS的调试点需要30多ms。 这种情况完全是随机的,有时甚至超过4-5分钟。

 <bindings>
      <customBinding>
        <binding name="CustomNetTcpBinding" closeTimeout="01:01:00" openTimeout="01:03:00" receiveTimeout="01:10:00" sendTimeout="01:10:00">
          <reliableSession ordered="true" inactivityTimeout="01:10:00" />
          <transactionFlow/>
          <gZipMessageEncoding enableCompression="true" innerMessageEncoding="textMessageEncoding">
            <readerQuotas maxDepth="999999999" maxStringContentLength="999999999" maxArrayLength="999999999" maxBytesPerRead="999999999" maxNameTableCharCount="999999999"/>
          </gZipMessageEncoding>
          <windowsStreamSecurity/>
          <tcpTransport maxReceivedMessageSize="999999999" maxBufferSize="999999999"/>
        </binding>
  </customBinding>
</bindings>

我也改变了下面的maxConnection ......

 <connectionManagement>
      <add maxconnection="200" address="*" />
    </connectionManagement>

我在托管类型(本地和IIS)中使用相同的配置。

任何人都可以告诉我可能是什么原因或者我错过了什么。

提前致谢。

0 个答案:

没有答案