C# 如何在ASP.NET Web API内存测试中添加客户端证书?
我想使用内存C# 如何在ASP.NET Web API内存测试中添加客户端证书?,c#,asp.net,http,testing,asp.net-web-api,C#,Asp.net,Http,Testing,Asp.net Web Api,我想使用内存HttpServer测试我的Web API服务 当前设置如下所示: var httpConfig = CreateTestHttpConfiguration(); var server = new HttpServer(httpConfig); var handler = new WebRequestHandler(); var cert = new X509Certificate2("filename", "password"); handler.ClientCerti
HttpServer
测试我的Web API服务
当前设置如下所示:
var httpConfig = CreateTestHttpConfiguration();
var server = new HttpServer(httpConfig);
var handler = new WebRequestHandler();
var cert = new X509Certificate2("filename", "password");
handler.ClientCertificates.Add(cert);
var client = HttpClientFactory.Create(handler, server);
我可以使用这些客户端
向服务器发出请求,除了证书没有添加到请求中之外,其他一切都正常
据我所知,这是因为server
在handler
之前执行(我无法重新排列它们,因为它们实现了不同的接口),而且server
立即响应handler
甚至没有执行(我使用HttpClientHandler
子类而不是handler
测试了这个假设)
因此,我的问题是:如何添加用于内存测试的客户端证书?这种方法可以做到:
var server = new HttpServer(configuration);
var invoker = new HttpMessageInvoker(server);
var certificate = GetCertificate();
var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/YourPath");
request.Properties[HttpPropertyKeys.ClientCertificateKey] = certificate;
var result = await invoker.SendAsync(request, CancellationToken.None);