[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