c# - Azure WebJobs SDK 如何允许将特定参数列表注入(inject)到 Function 方法中?

标签 c# azure azure-webjobs azure-webjobssdk azure-queues

Azure SDK(用于队列)mentions a specific list of parameters that are allowed to be passed into a webjob Function .

例如

You can get the following message properties by adding parameters to the method signature:

DateTimeOffset expirationTime
DateTimeOffset insertionTime
DateTimeOffset nextVisibleTime
string queueTrigger (contains message text)
string id
string popReceipt
int dequeueCount

If you want to work directly with the Azure storage API, you can also add a CloudStorageAccount parameter.

我试图在他们的源代码中找到这是如何完成的,因为我想尝试传递我自己的参数。

任何人都可以解释/链接这是如何实现的吗?

最佳答案

此类参数是特定触发器绑定(bind)的静态绑定(bind)契约的一部分。每个触发器绑定(bind)定义其(可能为空)“内置”绑定(bind)值集。例如。 here是 QueueTrigger 的源代码,其中定义了这些值。只有此静态合约中的值才能通过这种方式绑定(bind)为方法参数。

运行时在索引时间根据触发器合约验证方法签名,这就是为什么我将其称为静态合约的原因。如果无法根据合约解析该方法的一个或多个参数,则会发生索引错误。在运行时,当触发方法时,绑定(bind)契约将填充来自实际触发值的值(例如队列消息)。

扩展触发器绑定(bind)可以以相同的方式定义合约。例如,here Azure Functions 中的 HttpTrigger 绑定(bind)将路由模板中的路由参数添加到其绑定(bind)协定中。例如。对于像 products/{category:alpha}/{id:int?} 这样的路由模板,“category”和“id”都会添加到合约中,因此可以直接绑定(bind)为方法参数。在运行时,绑定(bind)数据将使用来自触发 http 请求 URL 的实际运行时值进行填充。

此合约的定义由触发绑定(bind)作者负责,并且不可从外部扩展。

关于c# - Azure WebJobs SDK 如何允许将特定参数列表注入(inject)到 Function 方法中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40069335/

相关文章:

c# - 使用 KMS 加密的 S3 PutObject 失败并出现 403 "Access Denied"错误

azure - 是否可以从 Azure WebJobs QueueInput 项生成唯一的 BlobOutput 名称?

.net - 如何在不安装的情况下运行scriptcs?制作可移植/独立脚本 (csx)

azure - 如何通过 Azure DocumentDB 以事务方式使用 Azure 服务总线

javascript - Azure:Web 应用程序 - 列出已部署的 Nodejs 应用程序中的应用程序设置

azure - 创建自定义域以指向 Azure 存储帐户 - 静态网站无法正常工作

c# - Webjob V3 未启动 : Method not found: 'Microsoft. WindowsAzure.Storage.Blob.CloudBlobContainer

c# - 在 Web 应用程序中在哪里以及如何使用拦截器?

c# - 以编程方式将权限分配给注册表子项

c# - Span<long> 操作返回 “cannot convert long to int”