2

我创建以下程序:

using System;
using Microsoft.Azure.WebJobs;

namespace StayUpdated.Cpe.PypyFilter
{
    public class Program
    {
        public static void Main()
        {
            var jobHost = new JobHost();
            jobHost.RunAndBlock();
        }

        public static void ProcessQueue([ServiceBusTrigger("start")] String input)
        {
        }
    }
}

在 app.config 我添加以下连接字符串:

<add name="AzureWebJobsDashboard" connectionString="DefaultEndpointsProtocol=https;AccountName=cpepypywebjobstorage;AccountKey=2iCufOrnXeY/B/VJptegGXaAbEmoj1SOgiiAbunk1kDAPqhkgvcOj3NEVGqtm0363GHu/h6Fy8JfoWEpKCP2Rw==" />
<add name="AzureWebJobsStorage" connectionString="DefaultEndpointsProtocol=https;AccountName=cpepypywebjobstorage;AccountKey=2iCufOrnXeY/B/VJptegGXaAbEmoj1SOgiiAbunk1kDAPqhkgvcOj3NEVGqtm0363GHu/h6Fy8JfoWEpKCP2Rw==" />

我收到FunctionIndexingException消息异常,Error indexing method 'ProcessQueue'.

4

1 回答 1

10

这是由于缺少AzureWebJobsServiceBus连接字符串造成的。您必须添加该连接字符串或ServiceBusConnectionString通过JobHostConfiguration.

您可以查看该异常的内部异常,并看到它是ConfigurationErrorsException带有消息的:

配置缺少必需的信息。确保将属性“端点”定义为“appSettings”部分或 Windows Azure 配置设置中的“Microsoft.ServiceBus.ConnectionString”键的一部分。

不幸的是,按照异常消息中提供的说明操作将不起作用。

我相信原因是因为没有服务总线连接字符串,JobHost 不会加载它需要加载的任何内容以成功解析ServiceBusTrigger属性。

如果您收到的错误类似于以下内容,那就更好了,

尝试设置没有 ServiceBusConnectionString 的 ServiceBusTrigger。

更好的是只记录一个警告,说明有些触发器永远不会被击中并继续。有人可能想要设置触发器,但并不总是有服务总线连接字符串。

于 2014-10-26T06:35:34.243 回答