C# 尝试连接时从Azure Vault引发NullReferenceException的GetSecret

C# 尝试连接时从Azure Vault引发NullReferenceException的GetSecret,c#,.net,azure,azure-keyvault,C#,.net,Azure,Azure Keyvault,我有以下问题: 我正在尝试使用证书凭据连接到Azure Vault 当试图读取一个秘密时,我得到一个内部NullReferenceException的authenticationfailedeexception 为简洁起见,我仅包括NullReferenceException的堆栈跟踪: This exception was originally thrown at this call stack: Azure.Identity.AadIdentityClient.CreateClien

我有以下问题:

我正在尝试使用证书凭据连接到Azure Vault

当试图读取一个秘密时,我得到一个内部
NullReferenceException
authenticationfailedeexception

为简洁起见,我仅包括NullReferenceException的堆栈跟踪:

This exception was originally thrown at this call stack:
    Azure.Identity.AadIdentityClient.CreateClientAssertionJWT(string, string, System.Security.Cryptography.X509Certificates.X509Certificate2)
    Azure.Identity.AadIdentityClient.CreateClientCertificateAuthRequest(string, string, System.Security.Cryptography.X509Certificates.X509Certificate2, string[])
    Azure.Identity.AadIdentityClient.Authenticate(string, string, System.Security.Cryptography.X509Certificates.X509Certificate2, string[], System.Threading.CancellationToken)
    Azure.Identity.ClientCertificateCredential.GetToken(Azure.Core.TokenRequestContext, System.Threading.CancellationToken)
守则:

            string keyVaultUrl = "https://somevault.vault.azure.net/";
            var clientId = "<Application (client) ID>";
            var tenantId = "<Directory (tenant) ID>";
            X509Certificate2 clientCertificate = new X509Certificate2(@"someCerFile.cer");
            ClientCertificateCredential certificateCreadential = new ClientCertificateCredential(tenantId, clientId, clientCertificate);
            var client = new SecretClient(new Uri(keyVaultUrl), certificateCreadential);
            var secret = client.GetSecret("Password"); //This line throws the exception
string keyVaultUrl=”https://somevault.vault.azure.net/";
var clientId=”


有什么想法吗?

不幸的是,例外情况不是很有帮助。但是,我认为这里的问题是您需要提供一个X509Certificate2,它具有私钥,以便
客户端CertificateCredential
可以对客户端断言进行签名。
.cer
文件只是证书的公共部分。您需要提供一个
.pfx
同时包含证书和私钥的文件。

私钥是否水合?X509Certificate2 clientCertificate=new X509Certificate2(@“someCerFile.cer”);if(null==clientCertificate){抛出新算术异常(“clientCertificate Is null”);}{if(null==clientCertificate.PrivateKey){抛出新的算术异常(“PrivateKey为null”);}}最终,我会在每个对象创建周围放置try/catch(当然跳过基本字符串)…然后逐个验证每个“片段”…以帮助找到罪魁祸首。然后我会查看源代码: