Подключение к службе WCF из службы Windows - PullRequest
0 голосов
/ 27 января 2012

Служба WCF размещена на удаленной машине.Я могу подключиться к нему и использовать сервис отлично с приложением WPF.Я также хочу иметь возможность подключиться к службе WCF из другой службы Windows на другом компьютере.У меня app.config, настроенный так же, как приложение WPF, но служба Windows не подключается к службе WCF.Вот ошибка:

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

Вот файл app.config из службы Windows:

<?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:00: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>
</configuration>

Есть идеи, почему я могу нормально подключиться к приложению WPF, но не из службы Windows?

РЕДАКТИРОВАТЬ:

Вот как я создаю соединение в коде:

EndpointAddress ep = new EndpointAddress("net.tcp://" + remoteIP + ":8731/WCFService/");
InstanceContext context = new InstanceContext(this);
wcfObj = new WCFService.WCFServiceClient(context, "NetTcpBindingEndpoint", ep);
wcfObj.Subscribe();

РЕДАКТИРОВАТЬ 2:

Благодаря Huusom я смог заставить его работать, изменив учетную запись, под которой работает служба.Проблема в том, что я не хочу просить пользователей, которые устанавливают службу, портить учетные записи служб.Могу ли я что-нибудь сделать, кроме этого, чтобы заставить его работать?Могу ли я отключить какую-либо защиту?

1 Ответ

0 голосов
/ 28 января 2012

Продолжить с комментариев по вопросу.Необходимо настроить резервирование пространства имен на ip-порту: msdn

...