Вызов методов веб-службы https

Я добавил веб-ссылку на веб-сервис, URL-адрес которого начинается с https. И пытается позвонить по следующему коду C#

testwebservices.BasicHttpBinding_GDataService webservice = new testwebservices.BasicHttpBinding_GDataService ();
Uri uri = new Uri(webservice.Url);            
CredentialCache cache = new CredentialCache();
cache.Add(uri, "Negotiate", new NetworkCredential("username", "password", "domainName"));
webservice.Credentials = cache;

var response = webservice.GetMethods();
return response;

Я получаю следующую ошибку

The request failed with HTTP status 401: Unauthorized.

Я предполагаю, что причина в том, что "BasicHttpSecurityMode не был установлен в качестве транспорта" (что возможно, если я добавлю в качестве ссылки на службу). Я не мог найти способ установить это. Или это не может быть недостижимым? Это проект VS.Net 2005,

Обновлено: я также добавил следующее, но с той же ошибкой

webservice.UseDefaultCredentials = true
var response = webservice.GetMethods();

рабочая версия: следующий код начал работать. Спасибо @user469104

testwebservices.BasicHttpBinding_GDataService webservice = new testwebservices.BasicHttpBinding_GDataService ();
webservice.Credentials = new NetworkCredential("username", "password");
var response = webservice.GetMethods();

1 ответ

Решение

Полученная ошибка не связана с https как таковой. 401 означает, что какие бы учетные данные не передавались на сервер, если они есть, они не авторизованы для доступа к сервису.

Я предполагаю, что это веб-сервис, размещенный на IIS? Если это так, и у вас есть контроль над ним, убедитесь, что включена "Интегрированная аутентификация" (я предполагаю, что это то, что вы пытаетесь использовать, поскольку вы указываете "согласование"), и убедитесь, что вы передаете действительные учетные данные. Как сказал DJ KRAZE в своем комментарии, если вы пытаетесь передать учетные данные домена, убедитесь, что вы также передаете домен.

Другие вопросы по тегам