Изменение сертификатов службы WCF «На лету», без простоев

#c# #.net #wcf #web-services #wif

#c# #.net #wcf #веб-сервисы #с помощью

Вопрос:

Я исследовал способ изменения сертификатов IssuedTokenAuthentication в WCF после того, как служба начала прослушивать свое соединение. Я знаю, что мог бы изменить сертификаты, просто зайдя в web.config и затем сбросив сервис, чтобы он загрузил новые настройки, но мне нужно сделать это «на лету» без каких-либо простоев.

Я знаю, что мог бы получить текущий экземпляр ServiceHost, выполнив:

 ServiceHost host = (ServiceHost)OperationContext.Current.Host;
  

и тогда я мог бы получить доступ к сертификатам ее службы через:

 host.Credentials.IssuedTokenAuthentication.KnownCertificates
  

но это не работает после запуска службы, поскольку список возвращаемых сертификатов становится доступным только для чтения.

Другой способ, который я видел, — это пройти маршрут описания, но, похоже, он также доступен только для чтения:

 host.Description.Behaviors.Find<ServiceCredentials>().IssuedTokenAuthentication.KnownCertificates;
  

Тот же список сертификатов можно найти в следующем расположении web.config:

 <configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>              
          <serviceCredentials>
              <serviceCertificate/>
  

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

Спасибо!