Код, используемый для установки сертификата, действительно прост и понятен:
Код: Выделить всё
using (X509Store store = new X509Store(StoreName.My))
{
var collection = new X509Certificate2Collection();
// the p12 only have 1 cert (encryption) inside
byte[] data = Convert.FromBase64String(some.P12);
collection.Import(data, password,
X509KeyStorageFlags.Exportable |
X509KeyStorageFlags.PersistKeySet |
X509KeyStorageFlags.UserKeySet);
store.Open(OpenFlags.ReadWrite);
collection.ToList().ForEach((cert) => store.Add(cert));
store.Close();
foreach(X509Certificate2 cert in collection)
{
cert.Reset();
cert.Dispose();
}
}
Я просматривал Интернет в течение последнего дня и не смог найти ничего, что могло бы указать мне правильное направление. , как вы могли видеть из приведенного выше фрагмента кода, я даже предпринял дополнительный шаг, чтобы закрыть все X509Store и Dispose всех объектов X509Certificate2.
Флаги (
Код: Выделить всё
PersistKeySetОкружающая среда:
- Windows 11, Windows 10, Windows 7
- C#, .NET Core3.1 и .NET Framework 4.7
Подробнее здесь: https://stackoverflow.com/questions/781 ... -gc-occurs
Мобильная версия