C # .NET Core Azure Функции v2;Microsoft.Azure.ServiceBus 3.2.0, Microsoft.Azure.WebJobs 3.0.2, Microsoft.Azure.WebJobs.Extensions.ServiceBus 3.0.1
Мы получаем сообщения BrokeredMessages, опубликованные с использованием старых пакетов ServiceBus ( WindowsAzure.ServiceBus, Microsoft.ServiceBus ), Content-Type: text / plain .
Мы используем ServiceBusTrigger в функции azure для использования:
[ServiceBusTrigger("topic", "subscription", Connection = "appsetting")]Message message,
При попытке использовать тему из нового пакета
( microsoft.azure.servicebus ) мы сталкиваемся со следующей ошибкой:
System.Private.CoreLib: исключение при выполнении функции: Function1.Microsoft.Azure.WebJobs.Host: параметр привязки исключения 'message'.System.Private.CoreLib: невозможно перевести байты [99] с индексом 60 из указанной кодовой страницы в кодировку Unicode.
Эта ошибка возникает, даже если мы пытаемся использовать другие типы вместо Сообщение , например string , byte [] и пользовательские типы.
Похоже, проблема заключается в Content-Type :
Content-Type: text / plain
Другие комбинации BrokeredMessage, кажется, работают правильно (где ни одна не является пустой Content-Type);stream + none, stream + text / plain, string + none и string + text / plain; charset = unicode.
Мы можем обойти это (не проверено) в наших веб-заданиях, так как мы можем получить доступ к MessageReceiver илидругие конфигурации ServiceBus во время выполнения, чтобы справиться с этим, но до сих пор мы не смогли найти какое-либо решение или метод для обработки этого для функций Azure, поскольку инфраструктура выдает ошибку, прежде чем мы окажемся внутри функции.
Есть кто-нибудь ещесталкивался с этой ошибкой?Мой текущий подход неверен?
Мы не контролируем генерацию сообщений, поэтому мы не можем легко это изменить.
Другиевозникают разные проблемы с похожей конфигурацией: Отправка BrokeredMessage и приемник сообщений в Azure Function v2