如何在 ASP.NET Web API 内存测试中添加客户端证书?
How to add client certificate in ASP.NET Web API in-memory testing?
我想使用内存 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);
我可以使用这些 client
向服务器发出请求,除了证书没有添加到请求之外,一切正常。
据我所知,这是因为 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);
我想使用内存 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);
我可以使用这些 client
向服务器发出请求,除了证书没有添加到请求之外,一切正常。
据我所知,这是因为 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);