首页 > 代码库 > [ArgumentException: 可能证书“CN=JRNet01-PC”没有能够进行密钥交换的私钥,或者进程可能没有访问私钥的权限。有关详细信息,请参见内部异常。]

[ArgumentException: 可能证书“CN=JRNet01-PC”没有能够进行密钥交换的私钥,或者进程可能没有访问私钥的权限。有关详细信息,请参见内部异常。]

堆栈跟踪:

[CryptographicException: 密钥集不存在。]   System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) +450   System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle) +158   System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair() +231   System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey() +537   System.ServiceModel.Security.SecurityUtils.EnsureCertificateCanDoKeyExchange(X509Certificate2 certificate) +78[ArgumentException: 可能证书“CN=JRNet01-PC”没有能够进行密钥交换的私钥,或者进程可能没有访问私钥的权限。有关详细信息,请参见内部异常。]   System.ServiceModel.Security.SecurityUtils.EnsureCertificateCanDoKeyExchange(X509Certificate2 certificate) +16627277   System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateLocalSecurityTokenProvider(RecipientServiceModelSecurityTokenRequirement recipientRequirement) +137   System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateSecurityTokenProvider(SecurityTokenRequirement requirement) +50   System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateTlsnegoServerX509TokenProvider(RecipientServiceModelSecurityTokenRequirement recipientRequirement) +289   System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateTlsnegoSecurityTokenAuthenticator(RecipientServiceModelSecurityTokenRequirement recipientRequirement, Boolean requireClientCertificate, SecurityTokenResolver& sctResolver) +638   System.ServiceModel.Security.ServiceCredentialsSecurityTokenManager.CreateSecurityTokenAuthenticator(SecurityTokenRequirement tokenRequirement, SecurityTokenResolver& outOfBandTokenResolver) +16627516   System.ServiceModel.Security.SessionRenewSecurityTokenManager.CreateSecurityTokenAuthenticator(SecurityTokenRequirement tokenRequirement, SecurityTokenResolver& outOfBandTokenResolver) +176   System.ServiceModel.Security.SymmetricSecurityProtocolFactory.OnOpen(TimeSpan timeout) +220   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789   System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open(TimeSpan timeout) +81   System.ServiceModel.Channels.SecurityChannelListener`1.OnOpen(TimeSpan timeout) +398   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789   System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) +283   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789   System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) +126   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789   System.ServiceModel.Security.SecuritySessionSecurityTokenAuthenticator.OnOpen(TimeSpan timeout) +141   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789   System.ServiceModel.Security.SecurityUtils.OpenTokenAuthenticatorIfRequired(SecurityTokenAuthenticator tokenAuthenticator, TimeSpan timeout) +50   System.ServiceModel.Security.SecuritySessionServerSettings.OnOpen(TimeSpan timeout) +923   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789   System.ServiceModel.Security.SecurityListenerSettingsLifetimeManager.Open(TimeSpan timeout) +124   System.ServiceModel.Channels.SecurityChannelListener`1.OnOpen(TimeSpan timeout) +398   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789   System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) +283   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789   System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) +126   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +789   System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +255   System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +1172[ServiceActivationException: 由于编译过程中出现异常,无法激活服务“/Service1.svc”。异常消息为: 可能证书“CN=JRNet01-PC”没有能够进行密钥交换的私钥,或者进程可能没有访问私钥的权限。有关详细信息,请参见内部异常。。]   System.Runtime.AsyncResult.End(IAsyncResult result) +900192   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +192830   System.Web.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult ar) +107

 win7解决方式:

 1.运行mmc打开 控制台

2. 添加删除单元

3.导入证书

4.右键点击所选证书->所有任务->管理密钥->添加授权用户

5. 哦了

 

windows server 解决方式:

以windows server 2003为例:

1.打开证书存储目录:C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys

2. 根据修改时间找到要设置的证书,右键赋予访问权限即可

3.参考文件:http://msdn.microsoft.com/zh-cn/library/aa702621.aspx

 

[ArgumentException: 可能证书“CN=JRNet01-PC”没有能够进行密钥交换的私钥,或者进程可能没有访问私钥的权限。有关详细信息,请参见内部异常。]