我试图找到我应该从Azure存储队列中触发的Azure WebJobs QueueTrigger方法在做错什么。

我已经阅读了一些文档(如博客文章/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中读取信息。

    最佳答案

    嗯,WebJobs类必须是公共(public)的。

    using Microsoft.Azure.WebJobs;
    using Microsoft.WindowsAzure.Storage;
    using Microsoft.WindowsAzure.Storage.Blob;
    using Newtonsoft.Json;
    using Proceed.Common;
    using System;
    using System.Configuration;
    using System.IO;
    
    public class WebJobsTask {
      public 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);
      }
    }
    

    还找到了探索我的队列的快速方法:https://azurestorageexplorer.codeplex.com/

    09-26 20:11