TestServer CreateClient和HttpClientHandler - howto?

Pat*_*lan 6 .net xunit dotnet-httpclient asp.net-core

我正在使用AspNetCore TestServer并尝试连接到为NTLM身份验证配置的API服务.我要连接的服务需要访问System.Security.Claims.ClaimsPrincipal.Identity.

从我的控制台应用程序,我可以如下初始化他的HTTPClient,它的工作原理

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

HttpClient client = new HttpClient(handler);
Run Code Online (Sandbox Code Playgroud)

但是,TestServer CreateClient方法不接受HttpClientHandler.那么如何配置使用UseDefaultCredentials?

小智 0

一个选项是在 HttpClientHandler 上创建一个重载构造函数并包装 TestServer\'s\xc2\xa0HttpClientHandler。在那里,从 \xc2\xa0SendAsync 方法中,您只需要调用他\xc2\xa0TestServer\'s\xc2\xa0 HttpClientHandler 的方法\xc2\xa0SendAsync,如下所示\n

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