缺少ServiceBusConnectionString时的FunctionIndexingException

Mic*_*ltu 2 c# azure-webjobs azure-webjobssdk

我创建了以下程序:

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)
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在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==" />
Run Code Online (Sandbox Code Playgroud)

我收到一条FunctionIndexingException带有消息的异常Error indexing method 'ProcessQueue'.

Mic*_*ltu 10

这是由于缺少AzureWebJobsServiceBus连接字符串引起的.您必须添加该连接字符串或手动连接ServiceBusConnectionStringa JobHostConfiguration.

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

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

不幸的是,遵循异常消息中提供的说明将不起作用.

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

如果您收到的错误是沿着的,那会好得多,

尝试在没有ServiceBusConnectionString的情况下设置ServiceBusTrigger.

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

  • @ashish将其添加到app.config或web.config作为连接字符串.请看这里:https://msdn.microsoft.com/en-us/library/ms254494(v = vs.110).aspx (2认同)