#c# #azure-functions #azureservicebus
#c# #azure-функции #azureservicebus
Вопрос:
Я пытаюсь создать функцию Azure для обработки сообщений Dynamics 365 из служебной шины Azure. Сообщение сериализуется в двоичном формате XML .NET, поэтому я пытаюсь получить сообщение как двоичное и десериализовать его в своем коде.
Сигнатура моего метода функции:
public static void Run(
[ServiceBusTrigger("queue", Connection = "...")] byte[] message,
ILogger log,
MessageReceiver messageReceiver)
Однако время выполнения функций по-прежнему завершается сбоем при попытке проанализировать сообщение, так как я получаю следующую ошибку:
The Message with ContentType 'application/msbin1' failed to deserialize to a string with the message: 'Expecting element 'string' from namespace 'http://schemas.microsoft.com/2003/10/Serialization/'.. Encountered 'Element' with name 'RemoteExecutionContext', namespace 'http://schemas.microsoft.com/xrm/2011/Contracts'.'. System.Private.DataContractSerialization: Expecting element 'string' from namespace 'http://schemas.microsoft.com/2003/10/Serialization/'.. Encountered 'Element' with name 'RemoteExecutionContext', namespace 'http://schemas.microsoft.com/xrm/2011/Contracts'.
Как я могу получить необработанные данные с помощью ServiceBusTrigger
?
РЕДАКТИРОВАТЬ 1: та же ошибка возникает с
public static void Run(
[ServiceBusTrigger("queue", Connection = "...")] Message message,
ILogger log)
Я использую следующие версии Microsoft.Azure.WebJobs.Extensions.ServiceBus 4.1.0
и Microsoft.NET.Sdk.Functions 3.0.7
.
РЕДАКТИРОВАТЬ 2:
обновлены версии до Microsoft.Azure.WebJobs.Extensions.ServiceBus 4.1.1
и Microsoft.NET.Sdk.Functions 3.0.11
ошибка исчезла, но длина сообщения составляет 0 байт для обоих byte[]
и Message.Content
РЕДАКТИРОВАТЬ 3:
Azure Functions Core Tools
Core Tools Version: 3.0.3160 Commit hash: 00aa7f43cc5c5f15241b5e6e5363256f19ceb990
Function Runtime Version: 3.0.14916.0
Комментарии:
1. Если вы установите тип
Message
вместоbyte[]
, вы получите ту же ошибку?Massage.Body
свойство должно содержать массив байтов, но избегайте того, чтобы функции пытались получить доступ к сообщению, поскольку, похоже, у него возникли проблемы с этим. Также было бы полезно убедиться, что Functions SDK обновлен, и поделиться этим номером версии, если вы можете — если это последняя версия, которая поможет устранить проблему.
Ответ №1:
ContentType
должно быть application/json
. Подробности смотрите в этом выпуске GitHub.