【发布时间】:2018-09-24 13:58:27
【问题描述】:
我创建了一个这样的函数
public static Task HandleStorageQueueMessageAsync(
[QueueTrigger("%QueueName%", Connection = "%ConnectionStringName%")] string body,
TextWriter logger)
{
if (logger == null)
{
throw new ArgumentNullException(nameof(logger));
}
logger.WriteLine(body);
return Task.CompletedTask;
}
队列名称和连接字符串名称来自我的配置,它有一个INameResolver 来获取值。我在应用程序启动时将连接字符串本身从我的秘密存储放入应用程序配置中。如果连接字符串是授予整个帐户所有权限的普通存储连接字符串,则该方法按预期工作。
但是,在我的场景中,我从一个合作伙伴团队获得了一个 SAS,它只提供对单个队列的读取访问权限。我创建了一个类似于
的存储连接字符串QueueEndpoint=https://accountname.queue.core.windows.net;SharedAccessSignature=st=2017-09-24T07%3A29%3A00Z&se=2019-09-25T07%3A29%3A00Z&sp=r&sv=2018-03-28&sig=token
(我尝试在 Microsoft Azure 存储资源管理器中使用此连接字符串成功连接)
QueueTrigger 属性中使用的队列名称也是从 SAS 收集的
但是,现在我遇到了以下异常
$exception {"Error indexing method 'Functions.HandleStorageQueueMessageAsync'"} Microsoft.Azure.WebJobs.Host.Indexers.FunctionIndexingException
InnerException {"No blob endpoint configured."} System.Exception {System.InvalidOperationException}
如果您查看连接字符串,您可以看到异常是正确的。我没有配置 blob 端点。但是我也无权访问它,我也不想使用它。我只为这个QueueTrigger 使用存储帐户。
我正在使用 Microsoft.Azure.WebJobs v2.2.0。其他依赖项阻止我升级到 v3.x
当只有对单个队列具有读取访问权限的 SAS URI 可用时,使用存储队列中的消息的推荐方法是什么?如果我已经走在正确的道路上,我需要做什么才能摆脱异常?
【问题讨论】:
标签: azure azure-storage azure-webjobs azure-webjobssdk