2017-01-05 6 views
3

Я использую тестовый сервер AspNetCore и пытаюсь подключиться к службе API, настроенной для аутентификации NTLM. Служба, к которой я подключаюсь, нуждается в доступе к System.Security.Claims.ClaimsPrincipal.Identity.TestServer CreateClient и HttpClientHandler - howto?

Из моего консольного приложения я могу инициализировать его HTTPClient следующим образом, и это работает

HttpClientHandler handler = new HttpClientHandler() 
{ 
    UseDefaultCredentials = true, 
    PreAuthenticate = true 
}; 

HttpClient client = new HttpClient(handler); 

Однако метод TestServer CreateClient не принимает HttpClientHandler. Итак, как мне настроить UseDefaultCredentials?

+0

У вас есть это? Теперь я столкнулся с этой ситуацией, требующей требования к цифровой подписке. – fletchsod

ответ

0

Опция - создать перегруженный конструктор на вашем HttpClientHandler и обернуть HttpClientHandler TestServer. Там, от метода SendAsync вам просто нужно вызвать метод SendAsync ВЭ TestServer-х HttpClientHandler как этого

if (_wrappedMessageHandler != null) 
{ 
    var method = typeof(HttpMessageHandler).GetMethod("SendAsync", BindingFlags.Instance | BindingFlags.NonPublic); 
    var result = method.Invoke(_wrappedMessageHandler, new object[] { request, cancellationToken }); 
    return await (Task<HttpResponseMessage>)result; 
} 
else 
{ 
    var response = await base.SendAsync(request, cancellationToken); 
    return response; 

} 

Пожалуйста, не стесняйтесь проверить мое решение в моей blog

0

Вы не можете сделать окно AUTH с тестовый сервер. Связанная функция была добавлена ​​для предстоящего выпуска. https://github.com/aspnet/Hosting/pull/1248. См. Связанные проблемы и PR для обходных путей с помощью промежуточного программного обеспечения.