У меня обычная служба WCF, размещенная в IIS Express в Visual Studio 2010. IIS Express настроен на использование SSL.
До перехода на SSL у меня не было проблем, но теперь я не могу обновить, добавивссылка на службу WCF (которая является обычным размещенным в IIS файлом SVC).
Когда я использую WCFTestClient, появляется немного более полезная ошибка:
Ошибка: невозможнополучить метаданные от https://localhost:44302/Services/TrueChecksService.svc Если это служба Windows® Communication Foundation, к которой у вас есть доступ, убедитесь, что вы включили публикацию метаданных по указанному адресу.Для получения справки о включении публикации метаданных обратитесь к документации MSDN по адресу http://go.microsoft.com/fwlink/?LinkId=65455. URI ошибки обмена метаданными: https://localhost:44302/Services/TrueChecksService.svc Метаданные содержат ссылку, которая не может быть разрешена: 'https://localhost:44302/Services/TrueChecksService.svc'. Не удалось установить довериесвязь для безопасного канала SSL / TLS с полномочиями «localhost: 44302».Базовое соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL / TLS.Удаленный сертификат недействителен в соответствии с процедурой проверки. HETTP GET Ошибка URI: https://localhost:44302/Services/TrueChecksService.svc Произошла ошибка при загрузке 'https://localhost:44302/Services/TrueChecksService.svc'. Основное соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL / TLS.Удаленный сертификат недействителен в соответствии с процедурой проверки.
Вот мой конфиг на данный момент:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<bindings>
<basicHttpBinding>
<binding name="MyBasicHttpBindingConfig" receiveTimeout="00:15:00"
sendTimeout="00:15:00" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="Transport" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="TrueChecksService" behaviorConfiguration="TrueChecksServiceBehavior">
<endpoint binding="basicHttpBinding" bindingConfiguration="MyBasicHttpBindingConfig"
name="TrueChecksServiceEndpoint" contract="TrueChecksAdminSL.Web.Services.ITrueChecksService" />
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="TrueChecksServiceBehavior">
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<add port="44302" scheme="https"/>
</defaultPorts>
</useRequestHeadersForMetadataAddress>
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
Нужно ли писать собственный сертификатвалидатор, поскольку IIS Express создает самозаверяющий сертификат?Я пытался решить, не делая этого, потому что при развертывании в IIS на сайте будет настроен сертификат, выданный центром сертификации.
Спасибо за любую помощь.