使用azure函数版本1可以接受消息为BrokeredMessage。
public static void Run([ServiceBusTrigger("MySServiceBus", "MySubscriptionName", AccessRights.Listen, Connection = "MyConnectionString")]BrokeredMessage message, TraceWriter log)
然后使用与此类似的代码检索属性:
var MyProperty = message.Properties["MyMessageProperty"] as string
使用函数SDK的2.0版我无法在不收到反序列化错误消息的情况下将传入对象强制转换为BrokeredMessage
反序列化类型对象时出错 Microsoft.ServiceBus.Messaging.BrokeredMessage。输入源是 格式不正确。 System.Private.DataContractSerialization:The 输入源格式不正确。
是否可以使用函数2.0
获取消息属性答案 0 :(得分:3)
运行时版本2.0切换到new Service Bus client library based on .NET Standard。
BrokeredMessage
类不属于该库,而是具有Message
类,具有相似的功能但API不同。
您应该能够将输入参数绑定到此类,然后通过Message.UserProperties
字典访问自定义属性。
答案 1 :(得分:0)
在新世界(azure 函数 .net5)中,您不能再使用代理消息。新的图书馆不能满足它。
函数应用声明不再是[FunctionName=]
而是[Function=
您不能再接收 Message
或字节,而只能接收字符串。
示例:
[Function("TestFA")]
public async Task Run([ServiceBusTrigger(topicName, subscriberName, Connection = ???)] string messageText, string id, FunctionContext executionContext)
魔法现在在 FunctionContext executionContext 你可以从中获得属性 例如
KeyValuePair<string, object> props = executionContext.BindingContext.BindingData.Where(x => x.Key == "UserProperties").FirstOrDefault();