我遇到了这个问题,我需要进行外部 API 调用,但是在生产中我必须使用 API 调用的证书,而在开发中我实际上并不需要证书。我想知道如何实现一个解决方案,可以将生产代码和开发代码分开,这样我就不必注释掉该部分并且可能忘记更改它。任何提示将不胜感激!
public async Task<GetPersonResponse> PostPerson(PersonDto dto)
{
try {
var httpHandler = new HttpClientHandler();
var certificate = new X509Certificate2(
Path.Join(_certOptions.Path, _certOptions.Name),
_certOptions.Password,
X509KeyStorageFlags.MachineKeySet);
httpHandler.ClientCertificates.Add(certificate);
var client = new HttpClient(httpHandler);
var soapRequest = GenerateRequest(dto);
var request = new HttpRequestMessage() {
RequestUri = new Uri(_options.Value.URL),
Method = HttpMethod.Post,
Content = new StringContent(soapRequest.ToString(), Encoding.UTF8, "text/xml"),
};
var response = await client.SendAsync(request);
}
}
Run Code Online (Sandbox Code Playgroud)