Код: Выделить всё
if (!File.Exists(fileName))
{
throw new FileNotFoundException($"Signing certificate couldn't be found: {fileName}");
}
var certificate = new X509Certificate2(fileName, passPhrase, X509KeyStorageFlags.MachineKeySet);
builder.AddSigningCertificate(certificate);
builder.AddEncryptionCertificate(certificate);
Мой новый код теперь:
Код: Выделить всё
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
if (!File.Exists(path))
{
throw new FileNotFoundException($"Signing certificate couldn't be found: {fileName}");
}
var certificate = X509CertificateLoader.LoadPkcs12FromFile(path, passPhrase, X509KeyStorageFlags.MachineKeySet);
builder.AddSigningCertificate(certificate);
builder.AddEncryptionCertificate(certificate);
System.Security. Cryptography.CryptographicException: система не может найти указанный файл.
Я проверил, что файл существует в правильном месте, и это так. Я также попытался добавить переменную среды WEBSITE_LOAD_USER_PROFILE к 1, ошибка другая, но все равно не работает
System. Security.Cryptography.CryptographicException: набор ключей не существует
Мне трудно понять, почему он работает в net8, но не в .NET 9, несмотря ни на что с помощью конструктора или метода Load.
Сертификат создается во время задачи построения конвейера с помощью команды
Код: Выделить всё
dotnet dev-certs https -v -ep openiddict.pfx -p $(passPhrase)
Подробнее здесь: https://stackoverflow.com/questions/793 ... rvice-fail
Мобильная версия