Менять сертификаты службы 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/>

Я застрял на этом этапе, я не думаю, что на самом деле есть способ получить доступ к доступному для записи списку этих сертификатов. Это правда, кто-нибудь может подтвердить, или есть способ?

Спасибо!

0 ответов

Другие вопросы по тегам