Там не было канала, активно слушающего на wcf

Я работал над службой WCF, которая разработана в VS 2008 и размещена в Windows Server 2008, IIS 7.0. Когда я размещаю эту службу в своей локальной среде, она работает нормально, но когда я размещаю эту службу на рабочем сайте, она не работает. В этом сервисе я использую привязку WShttpbinding, и я использую режим безопасности - это сообщение, а тип клиента - "Имя пользователя"

 <security mode= "Message">
    <message clientCredentialType="UserName" />
</security>

В конфигурации поведения я использую

 <behavior name="name">
      <serviceMetadata  httpGetEnabled="true" httpsGetEnabled="true" httpsGetUrl="https://serviceurl/basic"/>                   
    <serviceDebug includeExceptionDetailInFaults="true" />
    <serviceCredentials>
    <serviceCertificate findValue="CN=WMSvc-AMAZONA-PJ1K606" />
    <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" embershipProviderName="WCFSqlProvider" />
    </serviceCredentials>
    </behavior>

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

Не было канала, активно прослушивающего "// имя компьютера, на котором размещен сервис /servicename/$metadata". Это часто вызывается неверным адресом URI. Убедитесь, что адрес, на который отправляется сообщение, совпадает с адресом, по которому служба прослушивает.

2 ответа

Похоже, ваша проблема с метаданными, согласно сообщению об ошибке.

<serviceMetadata  httpGetEnabled="true" httpsGetEnabled="true" httpsGetUrl="//https://serviceurl/basic"/>         

Попробуйте удалить // в начале httpsGetUrl атрибут, они могут причинять вам неприятности.

Вот несколько примеров конфигураций: http://msdn.microsoft.com/en-us/library/ms731317(v=vs.110).aspx

<system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="TransportSecurity">
          <security mode="Transport">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <services>
      <service name="Service" behaviorConfiguration="ServiceBehaviour">
        <endpoint address="" binding="webHttpBinding" behaviorConfiguration="webMyAcc" bindingConfiguration="TransportSecurity" contract="IService"/>
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehaviour">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="webMyAcc">
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    <client />
  </system.serviceModel>
Другие вопросы по тегам