我试图找到我正在做的错误应该从Azure存储队列触发的Azure WebJobs QueueTrigger方法。Azure WebJobs队列触发器不触发
我读过几篇文档(如在博客文章/ msdn文章中)。但我还不清楚。
主要问题/误解方面:
应该是什么Azure存储控制台应用程序的App.config或Windows Azure的配置(门户)连接字符串的名称。到目前为止,我在这两个地方设置了以下名称。
- AzureJobsStorage
- 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读取。
很高兴你发布了这个答案。无法相信Studio中的代码模板会将该类默认为私有类。 – JasonCoder 2016-03-24 15:36:42