- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个这样的函数
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;
}
队列名称和连接字符串名称来 self 的配置,该配置具有用于获取值的 INameResolver
。我在应用程序启动时将连接字符串本身从我的 secret 存储区放入应用程序配置中。如果连接字符串是授予整个帐户所有权限的普通存储连接字符串,则该方法将按预期工作。
但是,在我的场景中,我从合作伙伴团队获得了 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 可用时,从存储队列使用消息的建议方法是什么?如果我已经走在正确的道路上,我需要做什么才能摆脱异常?
最佳答案
正如您所见,v2 WebJobs SDK 还需要访问 blob 端点。恐怕这是设计使然,使用没有完全访问权限的连接字符串,如 SAS an improvement已跟踪但尚未实现。
以下是 v2 SDK 所需的权限。它需要获取 Blob 服务属性(Blob、Service、Read)和队列元数据并处理消息(Queue、Container&Object、Read&Process)。
Queue Trigger是获取消息并处理后删除,所以SAS需要Process权限。这意味着即使 SDK 不需要 blob 访问,您获得的 SAS 字符串也未正确授权。
您可以要求合作伙伴团队使用上述最低权限在 Azure 门户上生成 SAS 连接字符串。如果他们无法提供 blob 访问,v3 SDK 似乎是一个可以尝试的选择。
但是存在一些问题 1. 正如您提到的,其他依赖项阻止更新 2. v3 SDK 基于 .NET Core,这意味着无法避免代码更改。 3. v3 SDK文档和示例仍然under construction现在。
关于azure - 为什么在创建 QueueTrigger WebJob 函数时会看到 FunctionIndexingException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52481049/
这些方法单独使用,但不能一起使用。 public static class Functions { public static void ProcessQueueMessage([QueueT
我创建了以下程序: using System; using Microsoft.Azure.WebJobs; namespace StayUpdated.Cpe.PypyFilter { pu
我创建了一个这样的函数 public static Task HandleStorageQueueMessageAsync( [QueueTrigger("%QueueName%", Conn
我创建了一个这样的函数 public static Task HandleStorageQueueMessageAsync( [QueueTrigger("%QueueName%", Conn
我是一名优秀的程序员,十分优秀!