0

我正在尝试使用 WCF 开发服务,但找不到我创建的证书,该证书位于 TrustedPeple 文件夹下。到目前为止,这是我编写的代码块:

client.ClientCredentials.ServiceCertificate.SetDefaultCertificate(
            StoreLocation.CurrentUser,
            StoreName.My,
            X509FindType.FindBySubjectName,
            "WCfClient");

从上面的代码可以看出,我也尝试过手动设置证书特征,但还是找不到。

此外,我将发布我的 conif xml 文件的一部分以便更好地理解:

<services>

      <service 
        name="XMLServices.CriDecServices.CriDecService"
        behaviorConfiguration="wsHttpCertificateBehavior">
        <endpoint name="CriDecPoint"
          address=""
          binding="wsHttpBinding"
          bindingConfiguration="wsHttpEndpointBinding"
          contract="XMLContracts.ServiceContracts.ICriDecService"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8733/XMLServices/CriDecServices/CriDecService" />
          </baseAddresses>
        </host>
        </service>


      <service
        name="XMLServices.UtenteServices.UtenteService"
        behaviorConfiguration="wsHttpCertificateBehavior">
        <endpoint
          name="UserPoint"
          address="" 
          binding="wsHttpBinding"
          bindingConfiguration="wsHttpEndpointBinding"
          contract="XMLContracts.ServiceContracts.IUtenteService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8766/XMLServices/UtenteServices/UtenteService" />
          </baseAddresses>
        </host>
      </service>
      </services>

这是我得到的例外:

“未提供客户端证书。在 ClientCredentials 中指定客户端证书。”

谁能帮我理解为什么我似乎找不到我的证书?谢谢

4

1 回答 1

0

如果您查看此处,您会发现您尝试使用的商店不是来自受信任的人员文件夹的商店,而是来自个人文件夹的商店

你应该使用

StoreName.TrustedPeople

在此处查看更多详细信息https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.storename(v=vs.110).asp

您也很可能需要 StoreLocation.LocalMachine。

于 2015-11-17T17:36:50.573 回答