#wcf
#wcf
Вопрос:
Я пытаюсь добавить ссылку на службу в VS 2010 (WCF). Веб-служба использует WS-Policy, и когда я использую службу, я получаю некоторый прокомментированный код в моем разделе app.confing customBindings:
<!-- WsdlImporter encountered unrecognized policy assertions in ServiceDescription 'http://ws.TheirSite.com/WebServices/ResellerApiV1.wsdl': -->
<!-- <wsdl:binding name='ResellerApiBinding'> -->
<!-- <ns0:SupportingTokens xmlns:ns0="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">..</ns0:SupportingTokens> -->
и, похоже, я не могу создать заголовок SOAP с информацией о UsernameToken.
Эти разделы с комментариями связаны с тем, что мне нужно установить WSE 3.0 или это входит в состав платформы 4.0 Framework?
РЕДАКТИРОВАТЬ: Спасибо за комментарии. Хост перезвонил мне и сказал, что мне нужно добавить этот тег безопасности, чтобы решить эту проблему (* обратите внимание, что enableUnsecuredResponse доступен только в рамках платформы 4.0):
<security authenticationMode="UserNameOverTransport" enableUnsecuredResponse="true" />
По-видимому, прокомментированный xml в app.config вызван инструментом VisualStudio WsdlImporter (svcutil.exe ?), который не может обработать политику SupportingTokens, но добавление вышеупомянутой директивы вставит UsernameToken WS-Security в заголовок SOAP.
Комментарии:
1. WSE устарел. Не используйте его, если у вас вообще нет других вариантов. Ваша проблема может быть связана с тем, что WSE не реализует окончательные стандарты WS-Policy (это был промежуточный продукт).
2. Ага, спасибо. У меня он не установлен, и когда я добавляю ссылку на службу, я получаю этот раздел кода с комментариями в моем app.config. Есть идеи, почему? Спасибо
3. как я уже сказал, держу пари, что это устаревшие политики, которые не соответствуют стандартам.
4. Опубликуйте свой токен поддержки, определяющий WSDL. Это имя пользователя с переработанным паролем?
Ответ №1:
Недавно мне пришлось поддерживать WSE 3.0 в Visual Studio 2010 (не по выбору), поскольку у нас были некоторые приложения .NET 2.0, которые (по нескольким причинам) мы не можем обновить, и которым необходимо использовать WSE 3.0 по некоторым «нестандартным» причинам.
Вы можете заставить Visual Studio использовать старый импортер для создания прокси-серверов WSDL, но вам нужно установить WSE 3.0 и внести некоторые изменения в конфигурацию. Все это описано в двух сообщениях в блоге здесь:
Ответ №2:
Усовершенствования веб-службы 3 (WSE 3) официально не поддерживаются с Visual Studio 2008. Причина в том, что Microsoft хочет, чтобы вы перенесли свой код в WCF.
Следуйте приведенному ниже блогу, чтобы включить WSE 3.0 в Visual Studio 2012, 2010 и 2008
http://digantakumar.com/2010/06/04/wse-3-in-visual-studio-2008-and-2010/