我创建了以下程序:
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'
。
最佳答案
这是由于缺少 AzureWebJobsServiceBus
连接字符串造成的。您必须添加该连接字符串或通过 JobHostConfiguration
手动连接 ServiceBusConnectionString
。
您可以查看该异常的内部异常并看到它是一个带有消息的 ConfigurationErrorsException
:
Configuration is missing required information. Make sure the property 'Endpoint' is defined as part of 'Microsoft.ServiceBus.ConnectionString' key within 'appSettings' section, or Windows Azure configuration settings.
不幸的是,按照异常消息中提供的说明进行操作是行不通的。
我认为原因是因为没有服务总线连接字符串,JobHost 不会加载它需要加载的任何内容以成功解析 ServiceBusTrigger
属性。
如果您收到的错误是沿着这样的方向,那就更好了
Attempted to setup a ServiceBusTrigger without a ServiceBusConnectionString.
更好的方法是只记录一个警告,说明存在永远不会被触发并继续的触发器。人们可能希望设置触发器但并不总是有服务总线连接字符串。
关于c# - 缺少 ServiceBusConnectionString 时出现 FunctionIndexingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26570461/