Когда я запускаю свой API-интерфейс ядра ASP dotnet локально (в режиме выпуска), он выполняет внешний вызов, используя WCF и сертификат клиента (X509Certificate2), возвращая данные правильно.Но когда этот API развернут как служба приложений Azure, он сообщает: «Учетные данные сертификата клиента не были распознаны».X509Certificate2 правильно загружен из файловой системы (видно из удаленной отладки).
Я попытался сделать вызов с обычным HttpClient и добавить сертификат, но это дало мне те же результаты.Мы также попытались использовать CertificateStore с равными результатами.
private async Task ProcessRequestAsync(string endpoint, X509Certificate2 certificate, Func<SsoSoapType, Task> action)
{
BasicHttpsBinding binding = new BasicHttpsBinding();
EndpointAddress endpointAddress = new EndpointAddress(new Uri(endpoint));
ChannelFactory<SsoSoapType> factory = new ChannelFactory<SsoSoapType>(binding, endpointAddress);
factory.Credentials.ClientCertificate.Certificate = certificate;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
await action(factory.CreateChannel());
if (factory != null)
{
if (factory.State == CommunicationState.Faulted)
factory.Abort();
else
factory.Close();
}
}
Я ожидаю, что развернутая версия будет вести себя так же, как моя локальная версия.Но, видимо, это не так.
Может кто-нибудь объяснить, где это идет не так?Или это вызвано некоторыми настройками на портале Azure, которые необходимо настроить соответствующим образом?
С уважением, Jacco