Там не было канала, активно слушающего на 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>