Обновление Оказывается, все, что мне нужно было сделать, это обновить до .NET Core 2.1!Спасибо всем за решения!
У меня есть консольное приложение .NET Core 2.0, и мне нужно сделать веб-запрос к API, который использует проверку подлинности Windows (особенно NTLM).Это внутренний API в моей компании, и я с трудом пытаюсь подключиться к нему, получаю 401 с.
Мои исследования
Я зарегистрировался наSO:
Затем я обнаружил эту проблему, которая была поднята в.NET Core GitHub и говорит, что было решено .Я попытался выполнить пример кода там , но все равно не сработало.
Мой код
Вот то, что у меня есть, я изменилUri, поскольку он размещен в сети компании, но я надеюсь, что этого будет достаточно для локального запуска.
public class NTLMProxy
{
private readonly HttpClient _httpClient;
public NTLMProxy()
{
_httpClient = CreateHttpClientWithNTLM();
}
public Task<HttpResponseMessage> GetUsers()
{
var httpRequest = new HttpRequestMessage(HttpMethod.Get, _httpClient.BaseAddress);
return _httpClient.SendAsync(httpRequest);
}
public HttpClient CreateHttpClientWithNTLM()
{
var uri = new Uri("http://ntlmservice.com/services/api/foo");
var credentialsCache = new CredentialCache { { uri, "NTLM", CredentialCache.DefaultNetworkCredentials } };
var handler = new HttpClientHandler { Credentials = credentialsCache };
var httpClient = new HttpClient(handler) { BaseAddress = uri };
httpClient.DefaultRequestHeaders.ConnectionClose = false;
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
ServicePointManager.FindServicePoint(uri).ConnectionLeaseTimeout = 120 * 1000; // Close connection after two minutes
return httpClient;
}
}
Если у вас есть какие-либо идеи / предложения, пожалуйста, сообщите мне.