如何从服务总线触发的消息中获取用户属性?

时间:2019-11-21 17:14:28

标签: c# azure-functions azureservicebus

我有一个由servicebus触发的方法:

    public static async Task Run([ServiceBusTrigger(
            "antrox-topic",
            "antrox-subscritpion",
            Connection = "ServicebusConnectionString")]string message,
            IDictionary<string, object> UserProperties,
            ILogger log)

如何在不使用TryGetValue的情况下获取UserProperties的值?我们可以绑定值吗?

假设我知道UserProperties有一个名为SourceParty的密钥,我可以简单地将方法签名更改为以下内容吗:

    public static async Task Run([ServiceBusTrigger(
            "antrox-topic",
            "antrox-subscritpion",
            Connection = "ServicebusConnectionString")]string message,
            IDictionary<string, object> UserProperties,
            string SourceParty, //change made here <-----------
            ILogger log)

1 个答案:

答案 0 :(得分:2)

不支持此功能,首先这是一个自定义属性,不是服务总线消息属性,然后您可以检查ServiceBusTriggerBinding.cs,找到所有受支持的绑定。

这里是binding code,在这里您可以找到一些未在文档中列出的绑定,例如MessageReceiver,但是没有自定义属性或相关绑定,因此您必须使用UserProperties绑定或绑定消息转到Message类,然后从Message类获取UserProperties。