Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态更改WCF服务的证书,无停机_C#_.net_Wcf_Web Services_Wif - Fatal编程技术网

C# 动态更改WCF服务的证书,无停机

C# 动态更改WCF服务的证书,无停机,c#,.net,wcf,web-services,wif,C#,.net,Wcf,Web Services,Wif,我一直在研究一种方法,在WCF服务开始监听其连接后,更改WCF中已颁发的Tokenauthentication证书。我知道我只需进入web.config,然后重置服务,使其加载新设置,就可以更改证书,但我需要在不停机的情况下动态执行 我知道我可以通过以下操作获得当前ServiceHost实例: ServiceHost host = (ServiceHost)OperationContext.Current.Host; 然后我可以通过以下方式访问其服务证书: host.Credentials.I

我一直在研究一种方法,在WCF服务开始监听其连接后,更改WCF中已颁发的Tokenauthentication证书。我知道我只需进入web.config,然后重置服务,使其加载新设置,就可以更改证书,但我需要在不停机的情况下动态执行

我知道我可以通过以下操作获得当前ServiceHost实例:

ServiceHost host = (ServiceHost)OperationContext.Current.Host;
然后我可以通过以下方式访问其服务证书:

host.Credentials.IssuedTokenAuthentication.KnownCertificates
但一旦服务运行,这就不起作用了,因为返回的证书列表将变为只读

我看到的另一种方式是采用描述路线,但这似乎也是只读的:

host.Description.Behaviors.Find<ServiceCredentials>().IssuedTokenAuthentication.KnownCertificates;
host.Description.Behaviors.Find();
在web.config的以下位置可以找到相同的证书列表:

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

我被困在这一点上,我认为实际上没有办法访问这些证书的可写列表。有人能证实这是真的吗?还是有办法

谢谢