У меня есть веб-сервис WCF, который отлично работает с http-адресом, но с тех пор мне нужно было убедиться, что он работает через https.
Поскольку я использую IIS 7, процесс установки и запуска веб-сайта https с помощью этого руководства был довольно простым здесь
Я открыл браузер и получил обычные запросы безопасности, но после добавления исключения все работало нормально.
Затем я решил установить сертификат, потому что сертификат является локальным хостом, сервер и клиент - это один и тот же компьютер - и пусть мастер автоматически определяет местоположение.
Я вернулся к своему коду клиента WCF, это клиент, который вызывает веб-службы, размещенные в IIS (теперь https), и изменил привязку в 2 местах.
- Изменен адрес конечной точки на https
- Изменен режим безопасности для транспорта
Запустил код и затем получил эту ошибку:
«Не удалось установить доверительные отношения для безопасного канала SSL / TLS с полномочиями« localhost ».»
Наконец, я вернулся в IIS и в настройках SSL, изменил настройку, чтобы принимать клиентские сертификаты, и попытался проверить, проверено или нет, оба раза возникает одна и та же ошибка.
Есть идеи как это исправить?
Обновление Исправлена ошибка 1 - это потому, что сертификат был выдан имя_компьютера, и я использовал localhost в конфигурации.
Теперь, когда это работает, у меня появляется другая проблема:
Конечная точка не прослушивала https://[machine_name]/Downloads.svc, которая могла бы принять сообщение. Это часто вызвано неправильным адресом или действием SOAP. См. InnerException, если имеется, для получения более подробной информации. "
Внутреннее исключение = "Удаленный сервер возвратил ошибку: (404) Не найдено."
Проверьте web.config сайта IIS и изменил привязки DNS к localhost.
Все еще с этим весело, но, по мнению Microsoft, именно поэтому WCF должен быть хорошим, потому что он отделяет транспорт от логики кодирования, но пока я должен сказать, что это действительно сложно.
Обновление
выключил брандмауэр windows, не помогло ...
Вот моя привязка в web.config
<basicHttpBinding>
<binding name="IncreasedTimeout"
closeTimeout="12:00:00" openTimeout="12:00:00"
receiveTimeout="12:00:00"
maxReceivedMessageSize="1000000"
sendTimeout="12:00:00">
<security>
<transport></transport>
</security>
</binding>
</basicHttpBinding>