Простые вызовы WCF занимают много времени

Я создаю сервер WCF -клиентское приложение. Однако в моем первом тесте простой вызов (метод в основном просто возвращает true;) занимает много времени (~ 5 секунд)

Я попытался отследить его, и вот скриншот трассировка вызова enter image description here

Как вы можете видеть, между строками 2 и 3 есть промежуток в 5 секунд (хотя, если честно, я не знаю, что означают строки 2 и 3)

В конфигурации клиента (вызывающего) привязка выглядит как это (в основном генерируется Visual Studio

    <wsHttpBinding>
        <binding name="WSHttpBinding_IAgent" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
          maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
          textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
            enabled="false" />
          <security mode="None">
          </security>
        </binding>
      </wsHttpBinding>

и на сервере

<wsHttpBinding>
    <binding name="WSHttpBinding_IAgent" closeTimeout="00:01:00"
      openTimeout="00:01:00" receiveTimeout="00:05:00" sendTimeout="00:05:00"
      bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
      maxBufferPoolSize="16777216" maxReceivedMessageSize="16777216"
      messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
      allowCookies="false">
      <readerQuotas maxDepth="32" maxStringContentLength="16777216"
        maxArrayLength="16384" maxBytesPerRead="16384" maxNameTableCharCount="16384" />
      <reliableSession ordered="true" inactivityTimeout="00:10:00"
        enabled="false" />
      <security mode="None"/>
    </binding>

И то, как я это называю, примерно так

var client = new AgentClient(binding, BuildEndpointAddress(hostName, port));
for(int i =0; i<10; i++)
    client.IsAlive(); //this call is very slow despite just returning true;
    // subsequent calls are also slow so probably not because of wake-up time

Обратите внимание, что для этого теста и сервер, и клиент находятся на одном компьютере, поэтому это не может быть проблема с сетью. Есть идеи, что вызывает медлительность или где я могу найти дополнительную информацию для устранения этой проблемы?

8
задан Louis Rhys 4 June 2012 в 06:04
поделиться