C# 访问Azure密钥库时出现间歇性错误-密钥集不存在

C# 访问Azure密钥库时出现间歇性错误-密钥集不存在,c#,.net,azure,x509certificate,azure-keyvault,C#,.net,Azure,X509certificate,Azure Keyvault,我正在MVC web应用程序中使用Azure Key Vault。我使用证书连接到密钥库。下面是我的示例代码 AssertionCert = GetCertificate(WebConfigurationManager.AppSettings[KeyVaultConstant.ApplicationID], WebConfigurationManager.AppSettings[KeyVaultConstant.CertificateThumbprint], false); var ke

我正在MVC web应用程序中使用Azure Key Vault。我使用证书连接到密钥库。下面是我的示例代码

AssertionCert = GetCertificate(WebConfigurationManager.AppSettings[KeyVaultConstant.ApplicationID], WebConfigurationManager.AppSettings[KeyVaultConstant.CertificateThumbprint], false);    
var keyClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback((authority, resource, scope) => GetToken(authority, resource, scope, AssertionCert)));
var secrets = keyClient.GetSecretsAsync(WebConfigurationManager.AppSettings["VaultUri"]).GetAwaiter().GetResult();
在某些情况下,我会得到一个错误声明 加密异常:密钥集不存在


在研究中,我发现我必须授予IIS用户对存储主键的文件夹的权限。我做到了,但偶尔我会犯这样的错误。这种情况并非每次都会发生。

关于权限问题,您是对的。以下是针对相同问题的故障排除步骤:

故障排除步骤:

  • 首先检查运行CRM应用程序池或ADFS应用程序池的服务帐户
  • 现在打开证书管理器,在个人存储中找到您的证书。右键单击证书并选择“托管私钥”选项
  • 在“权限”窗口中,检查您的应用程序池服务帐户是否获得了适当的权限(读取权限应该可以,否则您可以授予完全控制权)
  • 在下面的屏幕截图中,我已对我的应用程序池帐户的通配符证书*.test.local授予了完全权限—“test\AppPoolSvc”

  • 授予权限后,执行IISRESET并尝试访问
如需进一步参考,请。另外,请尝试重新启动机器,看看它是否工作