Я хочу сослаться на веб-сервис, и он требует аутентификации пользователя/передачи. В VS 2008, если я пробую к тому, "добавляют ссылка", или, "добавляет сервисную ссылку", все, что я могу ввести, является URL, нет никакого способа ввести мои учетные данные. Очевидно, если я пытаюсь загрузить ws, он показывает мне хорошее сообщение:
Запрос перестал работать с состоянием HTTP 403: Запрещенный. Метаданные содержат ссылку, которая не может быть разрешена: Запрос HTTP несанкционирован со схемой 'Anonymous' аутентификации клиента. Заголовок аутентификации, полученный от сервера, был 'Основной областью = "weblogic"'. Удаленный сервер возвратил ошибку: (401) Несанкционированный.
Таким образом, мой вопрос: действительно ли возможно (использование VS 2008) добавить ссылку на веб-сервис, который защищен? Как?
В зависимости от того, как служба аутентифицируется, вас могут решить.
Если он использует членство в ASP.Net, радости не будет. Если сервисный код ваш, временно отключите аутентификацию, чтобы сгенерировать прокси.
В противном случае попробуйте использовать стандартный механизм:
http://username:password@host.domain/service
Лучший выбор : получите WSDL от вашего поставщика и используйте wsdl.exe для создания вашего прокси.
Обновление в ответ на комментарий:
Да, имитация службы для создания прокси-сервера - вполне разумный план, если целевая служба является службой ASP.net или принимает и возвращает только простые типы.
Конструктор веб-службы имеет перегрузку, которая принимает URI, или вы можете просто изменить сгенерированный источник.
Если вы решите изменить сгенерированный источник, вы, вероятно, захотите просто извлечь прокси-класс и удалить ссылку на веб-службу:
После создания прокси-сервера с помощью VS, если вы «покажете все файлы» и углубитесь в в справочнике WebService вы найдете файл с именем Reference.cs
. Это единственный файл, который вам нужен. Скопируйте содержимое в другой файл, а затем просто удалите ссылку на веб-службу.
Если вы сделаете это, вы потенциально можете добавить свою логику аутентификации в прокси на этом этапе.
Но, опять же, лучше всего получить WSDL от поставщика.
Удачи.
Похоже, вы пытаетесь использовать веб-ссылку, а не ссылку на службу (хотя я считаю, что веб-ссылка является одним из видов ссылки на службу). В VS08 после того, как вы запустили «Добавить ссылку на службу», набрали URL-адрес веб-службы, нажмите кнопку «Дополнительно», затем нажмите «Добавить веб-ссылку». Введите URL еще раз, затем нажмите «Добавить веб-ссылку». Теперь вместо этого у вас должна быть веб-ссылка, тогда аутентификация аналогична приведенной ниже:
WebService.Service myService = new WebService.Service();
myService.Credentials = new System.Net.NetworkCredential("username", "password");
WebService.ResultType results = myService.MyMethodReturnsResultType();