我正在构建一个基于Azure网站的解决方案,需要在后台定期联系服务总线中继端点。我计划的设计方法是使用Azure WebJob作为此后台任务的执行引擎 - 我将我的Service Bus连接字符串与App.config中的共享密钥凭据一起存储,并使用Pkcs12ProtectedConfigurationProvider和我的网站自定义加密它SSL证书,一切都会完美运作!
唯一的问题是,WebJobs似乎无法访问其包含网站的证书。我的WebJob的代码非常简单(但请注意,App.config的appSettings部分已加密):
public static void Main()
{
string connectionString = ConfigurationManager.AppSettings["Microsoft.ServiceBus.ConnectionString"];
Console.WriteLine(connectionString);
}
如果我在本地计算机上导入网站证书并在那里运行WebJob可执行文件,一切都按预期工作。但是当我将带有二进制文件和.exe.config文件的ZIP文件上传到Azure时,作业总是失败并出现以下错误。
[07/18/2014 22:53:24 > 621d84: ERR ] Unhandled Exception:
System.Configuration.ConfigurationErrorsException: Failed to decrypt using provider 'Pkcs12Provider'.
Error message from the provider: No certificate was found for thumbprint <My Certificate's Thumbprint>
(C:\DWASFiles\Sites\<My Site Name>\Temp\jobs\triggered\<My Job Name>\hzcfdtn5.f22\WebJob.exe.Config line
XX) ---> System.ApplicationException: No certificate was found for thumbprint <My Certificate's Thumbprint>
我猜测WebJob无法访问相应的网站证书存储区吗?这将使得使用Pkcs12提供程序加密我的WebJob的秘密几乎是不可能的 - 有更好的选择吗?或者WebJob只是这项工作的错误工具?
答案 0 :(得分:1)
Azure WebSites,AFAIK,无法使用自定义证书。
但是,您可以将连接字符串放在Azure门户网站的连接字符串部分中。以下是有关如何阅读后的详细信息:http://azure.microsoft.com/blog/2013/07/17/windows-azure-web-sites-how-application-strings-and-connection-strings-work/
虽然上述方法无法解决加密问题,但它至少会从AppConfig中删除CS。这就是我们使用Azure WebJobs SDK http://azure.microsoft.com/blog/2014/06/18/announcing-the-0-3-0-beta-preview-of-microsoft-azure-webjobs-sdk/
的Service Bus连接字符串webjobs似乎是您正在尝试做的正确工具。