Менять сертификаты службы WCF на лету, без простоев - PullRequest
1 голос
/ 06 апреля 2011

Я исследовал способ изменения сертификатов 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/>

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

Спасибо!

...