2009-10-05 3 views
4

У меня есть самопринятый (Console App) WCF REST службы со следующим Переплет:WCF HTTPS резидентных служба не работает («Подключение к серверу сброшено»)

  • WebMessageEncodingBindingElement
  • HttpsTransportBindingElement (ManualAddressing = верно, KeepAliveEnabled = верно, AllowCookies = ложь, HostNameComparisonMode = Точное)

Это подвергается над URL HTTPS ("https://mylaptop/myendpoint")

У меня есть самозаверяющий сертификат, выданный «mylaptop», который я назначаю с помощью myServiceHost.Credentials.ServiceCertificate.SetCertificate. Сертификат успешно добавлен, и ServiceHost успешно открывается (без исключений). Если я нахожу «netsh http show servicestate», я вижу, что есть успешная регистрация в https://mylaptop/myendpoint с HTTP.SYS

Однако, когда я выдаю GET конечной точке, это не сработает. Кажется, что сокет отбрасывается даже до получения действительного ответа HTTP. (FireFox говорит, что «соединение с сервером было сброшено», IE говорит, что «невозможно отобразить веб-страницу», и если я сделаю запрос через Fiddler, он говорит, что «соединение было принудительно закрыто удаленным хостом»).

Все работает нормально, когда я использую HTTP вместо HTTPS.

Любая идея, что может быть неправильным в случае HTTPS?

ответ

6

Возможно, вам понадобится httpcfg.exe, чтобы зарезервировать конечную точку с HTTP.SYS правильно с настроенным сертификатом X.509 для SSL. Шаги для его выполнения документированы here.

+0

такой сертификат не работает? – user1034912

5

Или используйте HttpCfgGui - гораздо более дружественный интерфейс для настройки сертификатов сервера w/HTTP.SYS. Это обязательная установка на всех моих серверах, которые выполняют HTTP w/WCF.