На данном клиенте при доступе к функции X509Certificate2UI.SelectFromCollection приложение закрывается, даже не обрабатывая ошибки.
Эта функция открывает диалоговое окно Windows, в котором пользователь может выбрать цифровой сертификат.
Я использую .NET Framework 4.5, и проблема возникает на компьютере с Windows 10 Pro, который имеет около 8 действительных сертификатов.
Я сделал тестовое приложение, чтобы взять журналы ивыясните, где именно происходит проблема, и именно при использовании функции X509Certificate2UI.SelectFromCollection.
static void Main(string[] args)
{
Console.WriteLine("Iniciando a aplicação para seleção de certificado");
try
{
Console.WriteLine("new X509Store");
X509Store store = new X509Store(StoreLocation.CurrentUser);
Console.WriteLine("store.Open");
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
// Obtém a coleção de certificados instalados
Console.WriteLine("store.Certificates");
X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;
// Excluí da coleção certificados vencidos, comparando a data corrente
Console.WriteLine("collection.Find");
X509Certificate2Collection fcollection = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
Console.WriteLine("X509Certificate2UI.SelectFromCollection");
X509Certificate2Collection certificados = X509Certificate2UI.SelectFromCollection(fcollection, "Certificados Cadastrados", "Selecione seu certificado", X509SelectionFlag.SingleSelection);
Console.WriteLine("store.Close");
store.Close();
Console.WriteLine("certificados.Count");
if (certificados.Count == 0)
{
}
Console.WriteLine("certificados[0]");
var teste = certificados[0];
Console.WriteLine("certificados[0].Subject");
var texto = certificados[0].Subject;
}
catch (Exception ex)
{
Console.WriteLine("ex.Message");
Console.WriteLine(ex.Message);
}
Console.WriteLine("Finalizando");
Console.ReadKey();
}
Кто-нибудь знает, что является причиной этой ошибки?