Сообщение ServiceBusTrigger не может прочитать BrokeredMessages из-за типа содержимого - PullRequest
0 голосов
/ 28 ноября 2018

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

1 Ответ

0 голосов
/ 28 ноября 2018

Вы пытались указать кодировку вместе с типом контента?как: Content-Type: text/plain;charset=unicode

...