C# Azure CertificateClient в статическом классеC#

Место общения программистов C#
Ответить
Anonymous
 C# Azure CertificateClient в статическом классе

Сообщение Anonymous »

В моем приложении ASP.NET Core мне нужно использовать Azure CertificateClient во вспомогательном классе, чтобы получать некоторые сертификаты во время запуска и использовать их на протяжении всего жизненного цикла приложения.
Раньше эти сертификаты хранились в помощнике, который извлекал их с локального компьютера, как показано в следующем примере:

Код: Выделить всё

public static class X509Certificate2Helper
{
private static readonly X509Store x509Store = new X509Store(StoreLocation.LocalMachine);

public static X509Certificate2 FindByFriendlyName(string certificateName)
{
ArgumentException.ThrowIfNullOrWhiteSpace(certificateName);
var certificate = Find(collection => collection.FirstOrDefault(c => c.FriendlyName == certificateName));
return certificate;
}

public static X509Certificate2 FindByThumbprint(string thumbprint)
{
ArgumentException.ThrowIfNullOrWhiteSpace(thumbprint);
var certificate = Find(certificates => certificates.Find(X509FindType.FindByThumbprint, thumbprint, false)
.FirstOrDefault());
return certificate;
}

private static X509Certificate2 Find(Func func)
{
x509Store.Open(OpenFlags.ReadOnly);
var certificates = x509Store.Certificates;
x509Store.Close();

var certificate = func(certificates);

if (certificate == null)
{
throw new InvalidOperationException("Certificate not found");
}

return certificate;
}
}
Проблема с CertificateClient заключается в том, что для подключения требуется URI, который находится в IConfiguration. Поэтому я не могу создать его статический экземпляр, как это было с X509Store. Каким может быть чистое решение для достижения моей цели?
Я бы хотел избежать использования внедрения методов для клиента следующим образом:

Код: Выделить всё

public static X509Certificate2 FindByFriendlyName(string certificateName, CertificateClient client)
PS: я не могу использовать классическое внедрение зависимостей, поскольку эти сертификаты также используются внешними библиотеками, которые я не могу изменять и которым нужен X509Certificate2< /код> объект

Подробнее здесь: https://stackoverflow.com/questions/793 ... atic-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»