我构建了一个Azure Web作业控制台,它引用了Windows Azure管理库。 我尝试使用公共设置方法验证我的应用。
该程序在我的本地工作正常,但在使用X509Certificates错误的Azure Web作业上失败。
这就是我为网络工作计划所做的工作。
在控制台应用上,按副本创建凭证&从设置文件中粘贴subscriptionId和cert字符串。
new CertificateCloudCredentials(
subscriptionId,
new 509Certificate2(Convert.FromBase64String(base64EncodedCertificate)));
已部署&尝试在Azure Web Job上“按需运行”。
错误
at System.Security.Cryptography.CryptographicException.ThrowCryptographicException(Int32 hr)
at System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromBlob(Byte[] rawData, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx)
at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags)
at System.Security.Cryptography.X509Certificates.X509Certificate..ctor(Byte[] data)
at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData)
执行时出现异常:
System.Security.Cryptography.CryptographicException, The system cannot find the file specified.
答案 0 :(得分:4)
我建议从这篇博文开始:http://blog.tylerdoerksen.ca/2015/11/29/pfx-certificate-files-and-azure-web-apps/。虽然这篇博文是关于Azure网站而不是Azure Webjobs本身,但我倾向于相信你的问题是因为这个。事实上,我遇到了与Azure网站完全相同的问题。
但是,为了使用博客文章中概述的解决方案,您不能按原样使用发布设置文件中的certstring
。以下是您需要做的事情:
App_Data
文件夹中,不确定在Webjob的情况下将其包含在何处。您可以尝试使其出现在bin文件夹中。阅读此文件并尝试使用博文中指定的语法(并在此处复制)创建X509证书的实例:
var cert = new X509Certificate2(pfxFile, "myPassword", X509KeyStorageFlags.MachineKeySet);