Доступ к WCF службе по локальной сети.
От: My_name_is_Bond  
Дата: 26.07.12 04:21
Оценка: 1 (1)
Есть простой WCF сервис, хостом для которого является консольное приложение.
Есть консольный клиент, работающий с этим сервисом.

Если хост и клиент запущены на одной машине, все нормально работает. Если на разных, то у клиента выбрасывается исключение "CommunicationObjectFaultedException: коммуникационный объект ServiceChannel нельзя использовать для связи, так как он находится в состоянии Faulted". При этом в логах хоста нет сообщения, что объект ServiceHost перешел в стостояние Faulted и второй клиет, запущенный рядом с хостом, спокойно с ним работает.
Исключение выбрасывается как при использовании tcp привязки, так и http.

Вот конфиг хоста:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <system.web>
    <compilation debug="true" />
  </system.web>
  <!-- Во время развертывания проекта библиотеки служб содержимое файла конфигурации необходимо добавить к файлу 
  app.config на узле. Файлы конфигурации для библиотек не поддерживаются System.Configuration. -->
  <system.serviceModel>
    <services>
      <service name="Termex.Lisa.Foundation.VnServer.HidCommunication">
        <host>
          <baseAddresses>
            <add baseAddress = "http://localhost:8732/Design_Time_Addresses/Termex.Lisa.Foundation.VnServer.HidCommunication/" />
            <add baseAddress = "net.tcp://localhost:8733/Design_Time_Addresses/Termex.Lisa.Foundation.VnServer.HidCommunication/" />
            <add baseAddress = "net.pipe://localhost/Design_Time_Addresses/Termex.Lisa.Foundation.VnServer.HidCommunication/" />
          </baseAddresses>
        </host>
        <!-- Service Endpoints -->
        <!-- Если адрес не задан полностью, он является относительным к вышеуказанному базовому адресу -->
        <endpoint address =""
                  binding="ws2007HttpBinding"
                  contract="Termex.Lisa.Foundation.VnServer.IHidCommunication"
                  name="HttpHidCommunication">
        </endpoint>
        <endpoint address =""
                  binding="netTcpBinding"
                  contract="Termex.Lisa.Foundation.VnServer.IHidCommunication"
                  name="TcpHidCommunication">
        </endpoint>
        <endpoint address =""
                  binding="netNamedPipeBinding"
                  contract="Termex.Lisa.Foundation.VnServer.IHidCommunication"
                  name="PipeHidCommunication">
        </endpoint>
        <!-- Metadata Endpoints -->
        <!-- Служба использует конечную точку Metadata Exchange для предоставления своего описания клиентам. -->
        <!-- Эта конечная точка не использует безопасную привязку и должна быть защищена или удалена перед развертыванием -->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- Чтобы избежать разглашения сведений о метаданных, 
          установите ниже значение FALSE и удалите вышеуказанную конечную точку метаданных перед развертыванием -->
          <serviceMetadata httpGetEnabled="True"/>
          <!-- Чтобы получить сведения об исключениях в ошибках для отладки, 
          установите ниже значение TRUE. Перед развертыванием установите значение FALSE, 
           чтобы избежать разглашения сведений об исключении -->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>


Вот конфиг удаленного клиента:


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <netNamedPipeBinding>
                <binding name="PipeHidCommunication" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                    hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
                    maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="Transport">
                        <transport protectionLevel="EncryptAndSign" />
                    </security>
                </binding>
            </netNamedPipeBinding>
            <netTcpBinding>
                <binding name="TcpHidCommunication" closeTimeout="00:01:00" openTimeout="00:01:00"
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" 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>
            <ws2007HttpBinding>
                <binding name="HttpHidCommunication" 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="Message">
                        <transport clientCredentialType="Windows" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="Windows" negotiateServiceCredential="true"
                            algorithmSuite="Default" />
                    </security>
                </binding>
            </ws2007HttpBinding>
        </bindings>
        <client>
            <endpoint address="http://192.168.7.110:8732/Design_Time_Addresses/Termex.Lisa.Foundation.VnServer.HidCommunication/"
                binding="ws2007HttpBinding" bindingConfiguration="HttpHidCommunication"
                contract="Service.IHidCommunication" name="HttpHidCommunication">
            </endpoint>
            <endpoint address="net.tcp://192.168.7.110:8733/Design_Time_Addresses/Termex.Lisa.Foundation.VnServer.HidCommunication/"
                binding="netTcpBinding" bindingConfiguration="TcpHidCommunication"
                contract="Service.IHidCommunication" name="TcpHidCommunication">
            </endpoint>
            <endpoint address="net.pipe://localhost/Design_Time_Addresses/Termex.Lisa.Foundation.VnServer.HidCommunication/"
                binding="netNamedPipeBinding" bindingConfiguration="PipeHidCommunication"
                contract="Service.IHidCommunication" name="PipeHidCommunication">
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>


Сдается мне, что ситуация типичная для начинающего пользование WCF, но гугление мне не помогло.
Что нужно настроить в конфигах или самой Windows, чтобы клиент и сервис заработали на разных машинах в локальной сети?
Помогите.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.