.net 如何在Windows Azure上获取代码中的证书

.net 如何在Windows Azure上获取代码中的证书,.net,azure,certificate,x509certificate,wif,.net,Azure,Certificate,X509certificate,Wif,我正在尝试创建我们自己的WIF身份提供程序并在Azure上运行它,但在尝试自动生成联盟元数据时,我遇到了困难 此行在Azure上似乎不起作用: CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, signingCertificateName); 证书已上载到Azure,我如何获得它 谢谢试试这篇博文: 它建议代码如下: X509Certificate2Collection selectedCerts

我正在尝试创建我们自己的WIF身份提供程序并在Azure上运行它,但在尝试自动生成联盟元数据时,我遇到了困难

此行在Azure上似乎不起作用:

CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, signingCertificateName);
证书已上载到Azure,我如何获得它

谢谢

试试这篇博文:

它建议代码如下:

X509Certificate2Collection selectedCerts = new X509Certificate2Collection();

X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
foreach (X509Certificate2 cert in store.Certificates)
{
    // do stuff with cert
}

作为其他答案的一个细微变化,如果您只想获得一个证书,而不是遍历所有证书,您可以执行以下操作:

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

X509Certificate2Collection matchedCertificates =
     store.Certificates.Find(X509FindType.FindBySubjectName, signingCertificateName, true);

if (matchedCertificates.Count > 0)
{
    myCertificate = matchedCertificates[0]; 
}

(这也不是特定于Azure的)

如下图所示,内部和云上的代码是相同的。我正在检查证书的名称,在Azure上它包含了额外的信息,这就是我找不到它的原因。这个片段让我看到Azure上证书的名称与我预期的不同,并解决了我的问题:)太好了,尽管我将其他repsonse标记为答案,因为它突出了我的问题,但我已将代码重构为如下所示。谢谢+1当前答案是什么,StoreLocation.LocalMachine还是StoreLocation.CurrentUser?我知道web应用程序无法访问localuser证书,所以它必须是本地计算机,我错了吗?我只在Azure上使用过LocalMachine,因为我发现用户的概念有点奇怪,或者在这种情况下是一个奇怪的概念。