由于内容类型,ServiceBusTrigger消息无法读取BrokeredMessages

时间:2018-11-28 16:30:26

标签: c# azure-functions servicebus azure-servicebus-topics

C#.NET Core Azure Functions v2; Microsoft.Azure.ServiceBus 3.2.0,Microsoft.Azure.WebJobs 3.0.2,Microsoft.Azure.WebJobs.Extensions.ServiceBus 3.0.1

我们收到使用旧ServiceBus软件包( WindowsAzure.ServiceBus,Microsoft.ServiceBus ),内容类型:文本/纯文本发布的BrokeredMessages。

我们在azure函数中使用ServiceBusTrigger来消费:

[ServiceBusTrigger("topic", "subscription", Connection = "appsetting")]Message message,

当尝试使用新软件包消费主题时

microsoft.azure.servicebus )我们遇到以下错误:

  

System.Private.CoreLib:执行函数Function1时发生异常。 Microsoft.Azure.WebJobs.Host:异常绑定参数“ message”。 System.Private.CoreLib:无法将索引60处的字节[99]从指定的代码页转换为Unicode。

即使我们尝试使用其他类型来代替 Message ,也会发生此错误,例如 string byte [] 和自定义类型。

问题似乎是 Content-Type

  

内容类型:文本/纯文本

其他BrokeredMessage组合似乎正常工作(其中没有一个为空的Content-Type); 流+无,流+文本/纯文本,字符串+无和字符串+文本/纯文本;字符集= unicode。

由于我们可以在运行时访问MessageReceiver或其他ServiceBus配置来处理此问题,因此我们可以在webjobs中规避此问题(未试用),但是到目前为止,我们还找不到用于Azure的任何解决方案或方法在我们进入函数内部之前,作为框架的函数会引发错误。

还有其他人遇到此错误吗?我目前的方法有误吗?

我们无法控制消息的生成,因此我们无法轻松更改它。

其他人在类似配置方面存在不同的问题:BrokeredMessage send and Message consumer in Azure Function v2

1 个答案:

答案 0 :(得分:1)

您是否尝试过指定编码以及内容类型?像:Content-Type: text/plain;charset=unicode