Ошибка в Azure BizTalk Services при чтении XML-сообщения из очереди служебной шины
Фон
Я создал веб-службу в Azure, которая будет принимать транзакцию, преобразовывать ее в XML-сообщение (используя схему) и передавать его в очередь служебной шины Azure.
Я удалил сериализацию объекта XML в строку перед тем, как переместить его в очередь из-за неспособности BizTalk Services десериализовать любые объекты XML.
Все настройки в очереди выглядят нормально, и сообщение выглядит так:
<?xml version="1.0" encoding="utf-8"?> <QueueTransaction xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" TransactionID="1040" TransactionType="MyAirtimeTest1" Amount="123456" Status="NEW" TransactionDate="1/28/2015 12:00:00 AM" xmlns="http://MMBTService.TransactionSchema" />
Я создаю поток сообщений службы BizTalk с источником очереди служебной шины, односторонним расширением Xml и конечной точкой односторонней внешней службы (конечной точкой является веб-служба WCF)
У меня есть две схемы, используя MAP исходные данные XML для схемы веб-службы.
Я выбрал "Тип сообщения запроса" (схема источника), только "Утверждение" установлено как "Истина", я отключил все обогащение и мою MAP в XMLTransform.
ОШИБКА Я ПОЛУЧУ
После того, как я развернул все, перейдя в Tracking на BizTalk Services, я получаю следующую ошибку: Данные на корневом уровне недействительны. Строка 1, позиция 1.
Я прошел через это несколько дней и проверил каждую мелочь в десериализации сообщения в конфигурацию моста, но не смог найти проблему.
Любой совет или помощь будут по достоинству оценены.
1 ответ
Из описания проблемы кажется, что это проблема кодировки UTF. Сообщение, полученное в очереди служебной шины Azure, находится в кодировке UTF-8. Однако созданный мост ожидает сообщения в кодировке UTF-16.
Чтобы убедиться, что это проблема, вы можете проверить сообщения, полученные в очереди Azure, с помощью обозревателя служебной шины, разработанного Microsoft Guy S Paolo. Вы можете попробовать изменить сообщение UTF-8 на UTF-16 в ту же очередь и проверить, работает ли это.
Надеюсь, поможет.
Спасибо