Менять сертификаты службы WCF на лету, без простоев
Я исследовал способ изменения сертификатов IssuedTokenAuthentication в WCF после того, как служба начала прослушивать свое соединение. Я знаю, что могу изменить сертификаты, просто зайдя в web.config, а затем сбросив сервис, чтобы он загружал новые настройки, но мне нужно сделать это на лету без каких-либо простоев.
Я знаю, что могу получить текущий экземпляр ServiceHost, выполнив:
ServiceHost host = (ServiceHost)OperationContext.Current.Host;
и тогда я мог получить доступ к его сервисным сертификатам через:
host.Credentials.IssuedTokenAuthentication.KnownCertificates
но это не работает, когда служба запущена, так как список возвращаемых сертификатов становится ReadOnly.
Другой способ, который я видел, - это идти по пути описания, но, похоже, он доступен только для чтения:
host.Description.Behaviors.Find<ServiceCredentials>().IssuedTokenAuthentication.KnownCertificates;
Тот же список сертификатов можно найти в следующем месте web.config:
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceCredentials>
<serviceCertificate/>
Я застрял на этом этапе, я не думаю, что на самом деле есть способ получить доступ к доступному для записи списку этих сертификатов. Это правда, кто-нибудь может подтвердить, или есть способ?
Спасибо!