Как добавить ссылку на службу клиенту WCF для веб -службы, требующей сертификата аутентификации клиента

StackOverflow https://stackoverflow.com/questions/1283374

Вопрос

Осторожность, WCF Noobie Alert

Мне нужно создать клиент WCF, чтобы запросить веб-сервис без WCF. Веб -сервис не является сервисом WCF. Кроме того, веб -служба требует сертификата аутентификации клиента. Теперь у меня есть сертификат, и я могу создать клиента без WCF, который работает отлично; Я смог «добавить веб -ссылки», а диалоговое окно сертификата открылось, чтобы позволить мне выбрать соответствующий сертификат, а затем продолжил создавать веб -ссылку. Попытка создать клиент WCF через «Add Service Spearch» - это еще одна история, она просто не удается с ошибкой доступа к 403.

У меня есть WSDL для службы, и я запускаю Svcutil.exe, но я не уверен, как оттуда.

Спасибо за помощь!

Это было полезно?

Решение

Я предполагаю, что используемая вами служба выполняет аутентификацию клиента SSL.

Поскольку ссылка на добавление службы сбой, вы можете использовать Svcutil к Сгенерировать клиента из файла WSDL что у вас есть. Я думаю, что синтаксис будет чем -то вроде:

svcutil *.wsdl /l:C# /out:Reference.cs /config /s /ct:System.Collections.Generic.List`1 /ser:Auto /tcv:Version35 /n:*,<NameOfYourNamespaceHere> /edb

Это будет генерировать файл, reference.cs, который содержит классы прокси в Сервис (вы можете дать этот файл любое имя, которое вы хотите). Добавьте этот файл в свой проект. Также будет сгенерирован файл конфигурации, output.config. Вы можете добавить эту конфигурацию в конфигурацию вашего приложения вместо того, чтобы вводить все вручную.

Теперь вы можете следовать этой статье MSDN об использовании Транспортная безопасность с аутентификацией сертификата. Анкет Вы можете пропустить раздел клиента, где он показывает, как прикрепить сертификат к запросу в коде, а также в конфигурации.

Удачи.

Другие советы

Я знаю, что это старый вопрос, и он уже был решен, но я хотел бы упомянуть, что ссылка на добавление услуг также работает для файлов WSDL, хранящихся на диске. Марк также упомянул об этом. Добавить диалог ссылки на обслуживание принимает:

  • URL для WSDL
  • URL на метаданные обменная конечная точка
  • URL обслуживания, где /mex добавлено внутри
  • Любой путь файла в файл wsdl

Так что, если у вас есть WSDL и все необходимые файлы XSD, вы можете использовать также добавить ссылку на службу. Единственная сложная часть - это то, что диалоговое окно «Добавить ссылки на службу» не имеет кнопки «Просмотр», и именно поэтому эта функциональность не очень хорошо известна.

Глупой вопрос (возможно): не могли бы вы подключиться к конечной точке службы, представить его со своими учетными данными, хранящимися в сертификате, а затем загрузить WSDL (и, возможно, XSD) оттуда? Или это может быть объект, предлагающий эту службу, сможет на самом деле отправить вам эти файлы (или сделать их доступными для загрузки)?

После того, как у вас есть файл WSDL (и XSD) на диске, он должен быть достаточно просто для создания клиента WCF для этого (с использованием любого svcutil.exe или же Add Service Reference) в зависимости от этих файлов, а затем настройте соответствующую безопасность для него.

Просто мысль .... (стоит 0,02 доллара?)

Марк

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top