Добавить ссылку на службу, запрос нескольких учетных данных - PullRequest
7 голосов
/ 09 января 2012

Я запустил новый пустой проект консольного приложения в VS (я использую VS2010) и выбрал Добавить ссылку на службу в веб-службу, защищенную именем пользователя и паролем.

Когда я нажимаю кнопку Перейти в диалоговом окне, Я сталкиваюсь с предложением Да / Нет принять сертификат.Я выбираю «Да», затем я получаю приглашение Discovery Credential с запросом имени пользователя и пароля.

Если я несколько раз введу их правильно (3+), я наконец получу доступ к WSDL.Или, как ни странно, если я один раз наберу их правильно, затем отменил, а затем снова прошёл процесс, мои кредиты были приняты с первой попытки.

Я спросил The Googles и обнаружил несколько примеров, связанных с веб-отчетами по SQLслужбы, и кто-то опубликовал здесь о чем-то похожем, но никто, похоже, не имеет однозначного ответа.

Кто-нибудь может объяснить это странное поведение?Служба настроена неправильно или это какая-то известная проблема с веб-службами или службами WCF?

Ответы [ 5 ]

9 голосов
/ 10 января 2012

Я не уверен, что это ответ, или нет, но я публикую его на тот случай, если это поможет кому-то еще.

Из того, что я видел, если при добавлении веб-ссылки или ссылки на службу в защищенный веб-сервис возникает проблема с постоянным именем пользователя и паролем, и вы уверены , то вы вводите учетные данные правильно, убедитесь, что вы попробовали две вещи:

1) Использовать домен \ имя пользователя и только имя пользователя

2) После того, как вы хотя бы один раз правильно введете свои учетные данные и вам будет предложено повторить запрос, НЕ ДЕЛАТЬ ДАЛЬШЕ в течение 30-60 секунд (я только что это выдумал, YMMV). Если вы ждете в приглашении и , затем нажимаете кнопку Отмена, возможно, там находится справочная служба, ожидающая вашего добавления в проект.

Из того, что я вижу, Visual Studio спешит и повторно запрашивает вас, прежде чем у него есть время загрузить WSDL и / или сгенерировать прокси-классы.

5 голосов
/ 09 января 2014

У меня почти такая же проблема.Нужно было предоставить учетные данные более 3 раз, и это никогда не прекращалось.Включение анонимного не является реальным решением.Это, чем не будет запрашивать учетные данные.

Решение (без анонимного): - введите имя пользователя с информацией DOMAIN .В среде моих клиентов есть два домена.

То, что вы получаете приглашение три раза, - это (я думаю), потому что он выполняет некоторые действия по обнаружению на трех разных URL.

0 голосов
/ 25 октября 2015

Я наткнулся на похожий случай сегодня. Я следовал за многими обходными путями, но ни один из них не работал. Затем я попробовал новый подход: вместо ввода http://server.domain.name/path/to/wsdl я ввел http://server.ip.address/path/to/wsdl, и это сработало как шарм.

0 голосов
/ 27 мая 2014

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

Один обходной путь, который я нашел, сработал, хотя и был из этого Ответ StackOverflow - кажется, вы можете ввести учетные данные как часть URL-адреса обнаружения следующим образом:

http://[username]:[password]@[serviceUrl]/service?wsdl

например,

http://bob1:password1@myservice.com/service?wsdl

Когда я пыталсяЭтот метод с использованием диалогового окна «Добавить ссылку на службу». У меня больше не было всплывающих окон с этими учетными данными, и прокси-классы создавались без проблем.

0 голосов
/ 19 февраля 2013

Вчера много боролся с этим, и Google не сильно помог, кроме как обнаружил, что другие сталкивались с такой же путаницей.

Я мог прекрасно просматривать wsdl в IE, поэтому IE передавал учетные данные очень хорошо.Поэтому примерно через 5 часов «wtf» решил, что ссылка на добавление для диалога обнаружения в VS2010 просто не передает учетные данные .... об этом свидетельствует сообщение об ошибке, указывающее, что сервер не разрешает анонимную аутентификацию.

"Разве он не предоставит мои учетные данные так же, как IE? "

Хм, так что может и нет.возможно я предполагал, что это будет.Возможно VS2010 ТОЛЬКО хотел анонимную аутентификацию для обнаружения.

Проверка служб SSRS, которые я пытался «обнаружить», обнаружила, что анонимный доступ запрещен.

Так что в моем случае VS2010 хотел анонимно аутентифицироваться для обнаружения и, похоже, не хотел предоставлять учетные данные таким же образом, как это делал IE.

Итак, я открыл IIS на хост-сервере, включиланонимная проверка подлинности для служб SSRS и VS2010 перестали выдавать бесполезные запросы на вход в систему.

Ссылка на службу удалена и сгенерированы прокси.

Я не пытался отключить анонимный доступ, но у меня естьЯ чувствую, что, поскольку я собираюсь передать ClientCredentials прокси-серверу при его использовании, будет безопасно отключить анонимный доступ на хосте.

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

...