Вызов методов веб-службы 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 в своем комментарии, если вы пытаетесь передать учетные данные домена, убедитесь, что вы также передаете домен.