Почему время ожидания моего клиента WCF при попытке подключиться к службе WCF на локальном хосте? - PullRequest
0 голосов
/ 29 сентября 2011

У меня есть служба WCF, размещенная в службе Windows. Клиент, который подключается к нему, находится на той же машине, поэтому я ожидаю, что подключение займет много времени и определенно не истекло время ожидания. По какой-то причине, когда я запускаю клиент, и он пытается подключиться к службе, время ожидания истекает. Такое случается только изредка, но достаточно, когда это раздражает, поскольку все приложение зависит от хорошего соединения с сервисом. Что может привести к тому, что клиент на той же машине, что и сервис, истек при подключении? Вот файлы app.config с хоста и клиента.

Вот клиентская конфигурация:

  <system.serviceModel>
<bindings>
  <wsDualHttpBinding>
    <binding name="WSDualHttpBinding_IWCFService" closeTimeout="00:00:10"
      openTimeout="00:00:10" receiveTimeout="00:10:00" sendTimeout="00:00:30"
      bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
      maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
      textEncoding="utf-8" useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <reliableSession ordered="true" inactivityTimeout="00:10:00" />
      <security mode="Message">
        <message clientCredentialType="Windows" negotiateServiceCredential="true"
          algorithmSuite="Default" />
      </security>
    </binding>
  </wsDualHttpBinding>
</bindings>
<client>
  <endpoint address="http://localhost:8731/Design_Time_Addresses/WCF/WCFService/"
    binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_IWCFService"
    contract="WCFService.IWCFService" name="WSDualHttpBinding_IWCFService">
    <identity>
      <dns value="localhost" />
    </identity>
  </endpoint>
</client>

И сервисный конфиг:

<system.serviceModel>
<services>
  <service name="WCF.WCFService" behaviorConfiguration="WCFBehavior">
    <endpoint address="" binding="wsDualHttpBinding" contract="WCF.IWCFService">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint
      address="mex"
      binding="mexHttpBinding"
      bindingConfiguration=""
      contract="IMetadataExchange"/>
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8731/Design_Time_Addresses/WCF/WCFService/" />
      </baseAddresses>
    </host>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="WCFBehavior">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Могу ли я что-нибудь сделать, чтобы клиент лучше подключился и в целом сделал соединение более стабильным? Изменить привязку? Что-нибудь? * * 1013

1 Ответ

0 голосов
/ 29 сентября 2011

Попробуйте добавить еще одну конечную точку с помощью netNamedPipeBinding, которая изначально была разработана для локальных вызовов.

...