У меня есть следующий код, который работает, как и ожидалось:
var credentials = new NetworkCredential(UserName, Password, Domain);
var httpMessageHandler = new HttpClientHandler { Credentials = credentials };
HttpClient httpClient = new HttpClient(httpMessageHandler);
try
{
using (httpClient)
{
httpClient.BaseAddress = new Uri(ResourceUrl);
httpClient.Timeout = new TimeSpan(0, 2, 0); //2 minutes
var response = httpClient.GetAsync("data/v8.2/contacts?$top=1", HttpCompletionOption.ResponseHeadersRead).Result;
var response1Content = response.Content.ReadAsStringAsync().Result;
}
}
Однако, когда я пытаюсь получить доступ к тому же ресурсу через HTTPS (где ADFS 3 является полномочием), я не могу.
Microsoft предоставляет некоторый пример вспомогательного кода, инкапсулированного в Authorization
класс здесь .Я использовал это, поэтому мой код теперь выглядит следующим образом:
Configuration configuration = new Configuration();
configuration.Username = UserName;
configuration.Password = secure;
configuration.Domain = Domain;
configuration.ServiceUrl = ServiceUrl;
configuration.RedirectUrl = RedirectUrl;
configuration.ClientId = ClientId;
var credentials = new NetworkCredential(UserName, Password, Domain);
var httpMessageHandler = new HttpClientHandler { Credentials = credentials };
Authentication authentication = new Authentication(configuration, AdfsUrl);
OAuthMessageHandler oAuthHttpMessageHandler = new OAuthMessageHandler(authentication, httpMessageHandler);
HttpClient httpClient = new HttpClient(oAuthHttpMessageHandler);
try
{
using (httpClient)
{
httpClient.BaseAddress = new Uri(ServiceUrl);
httpClient.Timeout = new TimeSpan(0, 2, 0); //2 minutes
var response = httpClient.GetAsync("data/v8.2/contacts?$top=1", HttpCompletionOption.ResponseHeadersRead).Result;
var response1Content = response.Content.ReadAsStringAsync().Result;
}
}
Однако теперь это дает мне следующее исключение при попадании в эту строку:
var response = httpClient.GetAsync("data/v8.2/contacts?$top=1", HttpCompletionOption.ResponseHeadersRead).Result;
Любые предложения будут весьмаоценили.