Azure Web作业:无法绑定队列以键入“System.String”

时间:2017-12-08 21:28:48

标签: c# azure azure-storage azure-webjobs azure-storage-queues

我在Azure中创建了一个Web作业。这个Web作业由我的web api触发。此Web作业也设置为“连续”运行。但是,从我启动Web作业的那一刻起,我收到此错误消息(在日志中看到):

  

无法绑定队列以键入'System.String'

我的网络作业尝试重新启动,并再次收到相同的错误消息。

我试图对此错误消息进行一些研究,但我找不到任何东西。有没有人见过这个错误?这是我在functions.cs文件中的代码:

namespace DownloadProcessor
{
    public class Functions
    {
        public static void ProcessQueueMessage([Queue("ringclonedownloadprocessorqueue")] string message, TextWriter log)
        {
            log.WriteLine("Processing" + message);
        }
    }
}

看起来很简单。另外,这是我的Program.cs文件中的函数:

namespace DownloadProcessor
{
    // To learn more about Microsoft Azure WebJobs SDK, please see http://go.microsoft.com/fwlink/?LinkID=320976
    class Program
    {
        // Please set the following connection strings in app.config for this WebJob to run:
        // AzureWebJobsDashboard and AzureWebJobsStorage
        static void Main()
        {
            var host = new JobHost();
            // The following code ensures that the WebJob will be running continuously
            host.RunAndBlock();
        }
    }
}

这看起来非常简单,我创建了其他类似的Web作业。有没有人见过这个错误信息?知道我可能做错了吗?

2 个答案:

答案 0 :(得分:0)

万一有人遇到这个问题,我发现了发生了什么(在我的情况下)。我的问题在于这一行:

public static void ProcessQueueMessage([Queue("ringclonedownloadprocessorqueue")] string message, TextWriter log)

当我第一次创建它时,此Web作业是一个连续的作业。当Visual Studio创建代码模板时,它使用[Queue("ringclonedownloadprocessorqueue")] string message作为默认参数类型。我最近将作业更改为连续作业,而连续作业使用稍微不同的参数类型(QueueTrigger而不是Queue)。但是当我将作业更改为连续时​​,Visual Studio并未相应地更改参数类型。我需要进入并手动更新param类型。将功能更改为此可以解决问题:

namespace DownloadProcessor
{
    public class Functions
    {
        public static void ProcessQueueMessage([QueueTrigger("ringclonedownloadprocessorqueue")] string message, TextWriter log)
        {
            log.WriteLine("Processing" + message);
        }
    }
}

答案 1 :(得分:0)

在Node.js环境中使用函数时遇到此错误。就我而言,这是由于我忘记为"direction": "out"文件中的输出绑定指定function.json的事实