我试图找出应该从 Azure 存储队列触发的 Azure WebJobs QueueTrigger 方法我做错了什么。
我已经阅读了一些文档(如博客文章/msdn 文章)。但我仍然不清楚。
主要问题/被误解的方面:
Azure 存储控制台应用 App.config 或 Windows Azure 配置(门户)的连接字符串的名称应该是什么。到目前为止,我在两个地方都设置了以下名称。
- Azure作业存储
- AzureWebJobsStorage
- AzureJobsRuntime
- AzureJobsDashboard
- AzureJobsData
这是我的 WebJobs 控制台应用程序代码。
static void Main()
{
JobHost host = new JobHost();
host.RunAndBlock();
}
public static void CreateLeague([QueueTrigger("temp")] string msg)
{
var task = JsonConvert.DeserializeObject<QueueTask>(msg);
if (task.TaskType == QueueTask.TaskTypes.Pdf)
RenderPdf(task.Id);
}
这个控制台应用程序在我的 Azure 网站上持续运行。
我可以访问它的“调试”页面,我可以在其中切换输出,我看到它已启动/运行。
我添加队列的代码(来自我的 ASP.NET MVC 应用程序):
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"]);
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("temp");
queue.CreateIfNotExists();
Common.QueueTask task = new Common.QueueTask();
task.TaskType = Common.QueueTask.TaskTypes.Pdf;
task.Id = p.Id;
CloudQueueMessage msg = new CloudQueueMessage(JsonConvert.SerializeObject(task) );
queue.AddMessage(msg);
执行此代码,并将队列添加到我的存储帐户。但他们没有得到“出队”或从 WebJobs 中读取。