Не удается добавить ссылку на службу в службу WCF, размещенную в IIS Express с SSL - PullRequest
5 голосов
/ 18 апреля 2011

У меня обычная служба 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 на сайте будет настроен сертификат, выданный центром сертификации.

Спасибо за любую помощь.

1 Ответ

3 голосов
/ 19 апреля 2011

Просмотр URL из IE.Вы увидите предупреждение о наличии проблемы с сертификатом безопасности веб-сайта.Выполните действия, описанные в «что нужно делать, чтобы получить то есть 8, что нужно принять сам подписанный сертификат» .Если это успешно, и вы можете попасть на сайт без предупреждения в IE, WCFClient также сможет получить к нему доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...