Как перенастроить Kestrel после запуска приложенияC#

Место общения программистов C#
Anonymous
Как перенастроить Kestrel после запуска приложения

Сообщение Anonymous »

У меня есть метод настройки Kestrel перед запуском минимального API ядра asp.net, например:

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

var clientCertificateThumbprint = "XYZ";
var clientCertificateMode = ClientCertificateMode.RequireCertificate;
var listeningPort = 11101;
var tlsProtocol = SslProtocols.Tls12;
var cert = CertificationService.GetCert();

_builder.ConfigureKestrel(options =>
{
options.ListenAnyIP(listeningPort, listenOptions =>
{
listenOptions.UseHttps(cert, (httpsOptions) =>
{
httpsOptions.SslProtocols = tlsProtocol;
httpsOptions.ClientCertificateMode = clientCertificateMode;
httpsOptions.ClientCertificateValidation = (certificate, chain, sslPolicyErrors) => ValidateClientCertificate(certificate, clientCertificateThumbprint);
});
});
});

private bool ValidateClientCertificate(X509Certificate2? certificate, string thumbprint)
{
return certificate is null || DateTime.Now > certificate.NotAfter ? false : certificate.Thumbprint.Equals(thumbprint, StringComparison.OrdinalIgnoreCase);
}
Но если я вызову тот же метод после запуска приложения, произойдет сбой:
System.InvalidOperationException: 'Коллекцию служб нельзя изменить, поскольку она доступен только для чтения.'
Есть ли способ добиться этого?
Я не могу использовать автоматическую загрузку из файла appsettings, потому что все эти параметры конфигурации поступает из базы данных. Но если Kestrel может применять изменения из файла appsettings, должен существовать способ сделать это вручную во время выполнения.

Подробнее здесь: https://stackoverflow.com/questions/787 ... pplication

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