Невозможно подключиться к службе WCF из службы Windows - PullRequest
2 голосов
/ 15 марта 2012

У меня есть служба WCF, размещенная на удаленной машине. На моей локальной машине у меня есть приложение WPF и служба Windows, которую я хочу подключить к службе WCF. Приложение WPF подключается и общается нормально, но по какой-то причине служба Windows не подключается. Файлы app.config для них обоих идентичны, а код для подключения одинаков в обоих. Есть ли причина, по которой служба Windows не сможет подключиться?

Вот исключение, которое я получаю:

Соединение с сокетом было прервано. Это может быть вызвано ошибкой обработки вашего сообщения или превышением времени ожидания на удаленный хост или проблема с сетевым ресурсом. Локальный сокет тайм-аут был '00: 01: 14.9900000 '.

Странно, что исключение выдается в течение 5 секунд, а не после 1:15, когда тайм-аут установлен на.

Вот файл app.config:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="ServiceIP" value="127.0.0.1"/>
  </appSettings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="lib" />
    </assemblyBinding>
  </runtime>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="NetTcpBindingEndpoint" closeTimeout="00:01:00"
          openTimeout="00:00:10" receiveTimeout="00:10:00" sendTimeout="00:01:15"
          transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
          hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288"
          maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
            enabled="false" />
          <security mode="Transport">
            <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
            <message clientCredentialType="Windows" />
          </security>
        </binding>
      </netTcpBinding>
    </bindings>
    <client>
      <endpoint address="net.tcp://localhost:8731/WCFService/" binding="netTcpBinding"
        bindingConfiguration="NetTcpBindingEndpoint" contract="WCFService.IWCFService"
        name="NetTcpBindingEndpoint">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>
  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
        <listeners>
          <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="Traces.svclog"/>
        </listeners>
      </source>
    </sources>
  </system.diagnostics>
</configuration>

Насколько мне известно, трассировка не показывает ничего полезного.

1 Ответ

8 голосов
/ 15 марта 2012

Проверьте учетную запись, под которой работает ваша служба Windows. Поскольку вы получаете доступ к сетевому ресурсу, вам потребуется учетная запись домена, которая обладает достаточными правами для доступа к нему (как ваша учетная запись пользователя).

...