Мне нужно создать прокси WCF для службы, предоставляемой нашим клиентом. Сервис заблокирован довольно плотно, так что это сложно. Кроме того, я новичок в WCF, поэтому я могу упустить что-то очевидное ...
Клиент открыл свой брандмауэр только для нашего рабочего сервера, поэтому я не могу сгенерировать прокси из Visual Studio на своем компьютере разработчика. Кроме того, услуга доступна только через HTTPS. И это требует от нас аутентификации с использованием сертификата клиента ...
Я надеялся запустить svcutil на рабочей коробке, чтобы сгенерировать файлы .cs, а затем скопировать их локально. Но svcutil отказывается работать, потому что клиент использует самозаверяющий сертификат. Это дает мне следующую ошибку:
Базовое соединение было закрыто:
Не удалось установить доверительные отношения
для безопасного канала SSL / TLS.
удаленный сертификат недействителен
согласно процедуре валидации.
Я попытался добавить сертификат службы в качестве доверенного корневого сертификата, но это не работает. В оснастке MMC для сертификатов появляется сообщение «В Windows недостаточно информации для проверки сертификата».
Есть ли способ обойти проверку безопасности, которую выполняет svcutil?
Я могу успешно перейти к WSDL из IE, когда удаленно подключусь к производственному серверу. Мне просто нужно нажать «перейти на этот сайт (не рекомендуется)». Я также должен выбрать установленный сертификат клиента, который отлично работает. Затем я могу загрузить файлы WSDL и XSD вручную через IE. Таким образом, другой альтернативой может быть создание прокси WCF из локальных копий WSDL и XSD вместо запуска svcutil для работающей службы. Но я не знаю, как это сделать правильно.
Я пытался разместить статические файлы WSDL и XSD на другом веб-сайте, который мы размещаем, и изменил атрибуты , чтобы они указывали на новый сайт. Но когда я запустил svcutil для этого сайта, я получил кучу ошибок о двойных объявлениях типов - например ::
Ошибка: произошла ошибка проверки
схема, сгенерированная во время экспорта:
Источник:
Строка: 1 Столбец: 1415 Ошибка проверки: complexType
'http://[domain -name] / Promotions / 2009-02-17: InsertReferralPromo_Response ' имеет
уже было объявлено.
Я упускаю какой-то очевидный способ сделать это? Или мы должны просто потребовать, чтобы клиент ослабил свою безопасность? :)
Спасибо за любую помощь, которую вы можете мне оказать ...
Ричард