2016-07-29 4 views
1

я получаю сообщение об ошибке от моего SharePoint действия Get-Item, когда я пытаюсь использовать данные из сообщения Service Bus запуска моей логики приложения (внутренний XML опущены):Синтаксического Service Bus очереди сообщения в параметрической функции логики App

Невозможно обработать выражения языка шаблонов в действии «Входы Get_items» в строке «1» и в столбце «1641»: «Параметр« json »функции языка шаблона недопустим. Предоставляемое значение «<?xml version="1.0" encoding="utf-8"?> <Projektaufgabe id="b92d6817-694e-e611-80ca-005056a5e651" messagename="Update"> ... </Projektaufgabe>» не может быть проанализировано: «Неожиданный символ, встречающийся при разборе значения:. Путь '', строка 0, позиция 0. '.

Декодированное сообщение xml выглядит нормально даже в сообщении об ошибке.

Полученное тело сообщения очереди, кажется, все в порядке - только ТипСодержимого пуст: (ContentData усеченный)

{ 
    "ContentData": "77u/PD94bWwgdmVyc2lvbj0iMS4wIiBl...=", 
    "ContentType": "", 
    "ContentTransferEncoding": "Base64", 
    "Properties": { 
    "DeliveryCount": "1", 
    "EnqueuedSequenceNumber": "20000001", 
    "EnqueuedTimeUtc": "2016-07-29T09:03:40Z", 
    "ExpiresAtUtc": "2016-08-12T09:03:40Z", 
    "LockedUntilUtc": "2016-07-29T09:04:10Z", 
    "LockToken": "67796ed8-a9f0-4f6a-952b-ccf4eda00071", 
    "MessageId": "f3ac2ce4e7b6417386611f6817bf5da1", 
    "ScheduledEnqueueTimeUtc": "0001-01-01T00:00:00Z", 
    "SequenceNumber": "31806672388304129", 
    "Size": "1989", 
    "State": "Active", 
    "TimeToLive": "12096000000000" 
    }, 
    "MessageId": "f3ac2ce4e7b6417386611f6817bf5da1", 
    "To": null, 
    "ReplyTo": null, 
    "ReplyToSessionId": null, 
    "Label": null, 
    "ScheduledEnqueueTimeUtc": "0001-01-01T00:00:00Z", 
    "SessionId": null, 
    "CorrelationId": null, 
    "TimeToLive": "12096000000000" 

}

Моя разборе функция для SharePoint Get-Item OData фильтра выглядит следующим образом:

@{json(base64ToString(triggerBody().ContentData)).Projektaufgabe.id} 

Я уже пытался отделить декодирование и литье в строку:

Поскольку, похоже, проблема заключается в расшифровке сообщения, я полагал, что это не поможет получить json-сообщение вместо xml из очереди служебной шины.

ответ

1

Итак, из того, что я вижу, вы пытаетесь преобразовать xml в json. Вы очень близки - только вопрос @json() ожидает либо

  1. string, что является объект JSON
  2. An application/xml объект для преобразования в формат JSON

Здесь @ base64toString () является преобразование в строку, но вам действительно нужно, чтобы @json() знает, что это # ​​2 и # не 1, поэтому изменение выражения это должно работать:

@{json(xml(base64toBinary(triggerBody()[ contentdata ])))[ Foo ]}

Позвольте мне знать

+0

Я попробовал это, и он по-прежнему бросает шаткое над тем, что предположительный спецификация на старте затем декодируется строки. Поэтому вместо того, чтобы не разбирать строку xml в json, она жалуется, что не может разобрать строку в xml. Я решил укусить пулю и с самого начала отправил исходную строку json в очередь. Я вернусь и расскажу, как это получилось. – Filburt

+0

Можете ли вы отправить мне полную версию кодированной base64 строки? Xml должен обрабатывать спецификацию. Вы можете отправить сообщение по электронной почте, если хотите - jehollan [at] Microsoft.com – jeffhollan

+0

Ahh Я знаю. Измените base64toString на base64toBinary, который сохранит спецификацию, которую должен обрабатывать XML. – jeffhollan