WCF - ошибка "конечная точка не прослушивалась ..." - PullRequest
8 голосов
/ 28 марта 2011

У меня есть два приложения, которые я хочу проверить локально на одном компьютере.Приложение 1 имеет простую службу WCF с записью конфигурации folloiwng:

<service behaviorConfiguration="MyNamespace.ContainerManagementServiceBehavior"
        name="MyNamespace.ContainerManagementService">
  <endpoint address="ContainerManagementService" binding="basicHttpBinding"
     name="ContainerManagementbasicHttpEndpoint"
     contract="MyNamespace.IContainer" />
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  <host>
    <baseAddresses>
      <add baseAddress="http://localhost:8000/ContainerManagementService" />
    </baseAddresses>
  </host>
</service>    
<behaviors>      
  <behavior name="MyNamespace.ContainerManagementServiceBehavior">
    <serviceMetadata httpGetEnabled="true" />
    <serviceDebug includeExceptionDetailInFaults="false" />
  </behavior>
</behaviors>

Я запускаю службу, запустив проект веб-приложения, где она размещена.Я могу успешно перейти к URL-адресу и получить страницу информации о веб-сервисе от ie.Я копирую тот же URL-адрес и использую его для моего клиента.

В другом файле моего приложения, App 2, есть следующее:

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding name="basicHttp" closeTimeout="00:10:00"
        openTimeout="00:10:00" receiveTimeout="00:10:00"
        sendTimeout="00:10:00" allowCookies="false"
        bypassProxyOnLocal="false"
        hostNameComparisonMode="StrongWildcard"
        maxBufferSize="5242880" maxBufferPoolSize="524288"
        maxReceivedMessageSize="5242880" messageEncoding="Text"
        textEncoding="utf-8" transferMode="Buffered"
        useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192"
          maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="5242880" />
        <security mode="None">
          <transport clientCredentialType="None"
            proxyCredentialType="None" realm="" />
          <message clientCredentialType="UserName" algorithmSuite="Default" />
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
  <client>
    <endpoint
      address="http://localhost:3227/Services/ContainerManagementService.svc"
      binding="basicHttpBinding" bindingConfiguration="basicHttp"
      contract="MyService.IService" name="externalService" />      
  </client>
</system.serviceModel>

Однако, когда я пытаюсь выполнитьWCF звонит клиенту из запущенной службы, я получаю следующее сообщение об ошибке:

There was no endpoint listening at
http://localhost:3227/Services/ContainerManagementService.svc
that could accept the message. This is often caused by an incorrect
address or SOAP action. See InnerException, if present, for more details.

Что может происходить?

Ответы [ 3 ]

4 голосов
/ 29 марта 2011

Похоже, проблема в том, что сервер и клиент запускаются с сервера Cassini. Я изменяю архитектуру для размещения конечной точки сервера в IIS.

3 голосов
/ 28 марта 2011

У вас есть два приложения?

Один, на котором размещена конечная точка сервера, а другой - клиент?Активны ли оба в IIS (учитывая, что второе приложение является веб-приложением)?

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

1 голос
/ 28 марта 2011

Если ваш веб-сервис включен: http://localhost:8000/ContainerManagementService.svc

Ваше клиентское приложение2 должно указывать на те же адреса:

<client>
      <endpoint address="http://localhost:8000/ContainerManagementService.svc"
        binding="basicHttpBinding" bindingConfiguration="basicHttp"
        contract="MyService.IService" name="externalService" />      
</client>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...