Использование ссылки на службу для связи между службой WCF (клиент) и приложением WCF (сервер) - PullRequest
0 голосов
/ 26 января 2012

У меня возникла любопытная проблема: я пытаюсь подключить службу WCF к приложению WCF, но получаю ошибки.Оба компонента WCF по отдельности работают без сбоев с клиентом тестирования WCF и созданным мной тестовым соединением Winforms.

Вот вызов, который я выполняю в службе WCF (клиент) для ссылки на службу, указанной в моем приложении WCF(сервер).

EventCreationServiceReference.EventCreationServicePortClient _servicereference =
                        new EventCreationServiceReference.EventCreationServicePortClient();

Теперь я подключаюсь так же, как и Test Harness, единственное отличие, которое я могу себе представить, это Test Harness - простое приложение Winforms с ссылками на сервисы, тогда как этоСлужба WCF разговаривает с приложением Winforms с интерфейсом WCF.

Ошибка;

Could not find endpoint element with name 'EventCreationApp.IEventCreationServicePort' 
and contract 'EventCreationAppServiceReference.IEventCreationServicePort' in the 
ServiceModel client configuration section. This might be because no configuration file 
was found for your application, or because no endpoint element matching this name could 
be found in the client element.

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

Uri uri = new Uri("net.tcp://172.26.2.11:8525/EventCreationApp");
EndpointAddress endpointAddress = new EndpointAddress(uri);

EventCreationServiceReference.EventCreationServicePortClient _servicereference =
new EventCreationAppServiceReference.EventCreationServicePortClient(
"EventCreationAppServiceReference.IEventCreationServicePort", endpointAddress);

Вот моя конфигурация WCF для приложения WCF;

  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="EventCreationApp.IEventCreationServicePort" 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>
    </bindings>
    <services>
      <service behaviorConfiguration="EventCreationApp.Service1Behavior"
        name="EventCreationApp.EventCreationServicePort">
        <endpoint address="" binding="netTcpBinding" 
                  bindingConfiguration="EventCreationApp.IEventCreationServicePort"
          contract="EventCreationApp.IEventCreationServicePort"
          name="EventCreationApp.IEventCreationServicePort">
          <identity>
            <dns value="172.26.2.11" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
          contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://172.26.2.11:8525/EventCreationApp" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="EventCreationApp.Service1Behavior">
          <serviceMetadata httpGetEnabled="false" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

... иСправочный код службы клиента службы WCF для подключения к приложению.

<system.serviceModel>
        <bindings>
            <netTcpBinding>
                <binding name="EventCreationApp.IEventCreationServicePort" 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>
        </bindings>
        <client>
            <endpoint address="net.tcp://172.26.2.11:8525/EventCreationApp"
                binding="netTcpBinding" bindingConfiguration="EventCreationApp.IEventCreationServicePort"
                contract="EventCreationAppServiceReference.IEventCreationServicePort"
                name="EventCreationApp.IEventCreationServicePort">
                <identity>
                    <dns value="172.26.2.11" />
                </identity>
            </endpoint>
        </client>
    </system.serviceModel>

Помогите, я в полном замешательстве.

1 Ответ

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

Разве в конфигурации клиента не должно быть конечных точек 'Client'?

Конфигурация клиента WCF

[Edit]

Вы говоритеСлужба WCF общается с приложением WCF.Разве это не должно быть наоборот?

Или вы говорите, что служба WCF является клиентом, а приложение WCF - службой?

...