我创建了以下程序:
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'
消息。
答案 0 :(得分:10)
这是由于缺少AzureWebJobsServiceBus
连接字符串引起的。您必须添加该连接字符串或通过ServiceBusConnectionString
手动连接JobHostConfiguration
。
您可以查看该异常的内部异常,并看到它是ConfigurationErrorsException
并带有消息:
配置缺少必需的信息。确保将属性“端点”定义为“appSettings”部分或Windows Azure配置设置中“Microsoft.ServiceBus.ConnectionString”键的一部分。
不幸的是,按照异常消息中提供的说明操作将无效。
我认为原因是因为没有服务总线连接字符串,JobHost不会加载任何需要加载的内容,以便成功解析ServiceBusTrigger
属性。
如果您收到的错误符合
,那就更好了尝试在没有ServiceBusConnectionString的情况下设置ServiceBusTrigger。
更好的是只记录一个警告,即有永远不会被击中并继续的触发器。有人可能希望设置触发器但不总是有服务总线连接字符串。