Я получаю эту ошибку в форме назначения сообщения в моей оркестровке. В этой форме назначения я пытаюсь выполнить запрос XPath для извлечения строки в кодировке base64 из сообщения, полученного WCF. Затем я пытаюсь загрузить переменную XmlDocument с помощью Stream, созданного написанным мной вспомогательным классом. Строка base64 будет содержимым файла PDF или Excel (примечание: это не XML). Я читал, что это можно сделать.
Вот выражение, используемое в моем назначении сообщения:
messageCreator = new IAS.Integration.Services.Helpers.MessageCreator();
System.Diagnostics.EventLog.WriteEntry("IAS.Integration.Services.Orchestration", "MessageCreator Object created");
base64 = xpath(PerformTransformationResponse, "string(/*[local-name()='PerformTransformationResponseWrapper' and namespace-uri()='http://www.iasreo.com/integration/servicetypes']/*[local-name()='TransformedPayload'])");
//System.Diagnostics.EventLog.WriteEntry("IAS.Integration.Services.Orchestration", System.String.Format("Base64 from xpath: {0}", base64));
Output = new System.Xml.XmlDocument();
System.Diagnostics.EventLog.WriteEntry("IAS.Integration.Services.Orchestration", "Output instantiated as XmlDocument");
messageCreator.CreateMyMessage(Output, base64);
System.Diagnostics.EventLog.WriteEntry("IAS.Integration.Services.Orchestration", "messageCreator.CreateMyMessage(Output, base64)");
Вот вспомогательные классы, которые я написал для поддержки этого выражения:
[Serializable]
public class MessageCreator
{
public void CreateMyMessage(XLANGMessage outMessage, string binaryStringMessage)
{
outMessage[0].LoadFrom(new StreamFactory(binaryStringMessage));
}
}
[Serializable]
public class StreamFactory : IStreamFactory
{
private string messageContent;
public StreamFactory(string inMessageContent)
{
messageContent = inMessageContent;
}
public Stream CreateStream()
{
byte[] messageBytes = Convert.FromBase64String(messageContent);
return new MemoryStream(messageBytes, 0, messageBytes.Length, true, true);
}
}
Наконец, это ошибка, которую я получаю в средстве просмотра событий:
Запись журнала событий механизма xlang / s: Неперехваченное исключение (см. «внутреннее исключение» ниже) приостановило экземпляр службы «IAS.Integration.Services.Orchestrations.MainOrchestration (fcad6d68-ce54-bfa2-d035-56608b99ef52)». Экземпляр службы будет приостановлен до тех пор, пока не будет возобновлен или остановлен в административном порядке. При возобновлении экземпляр продолжит работу из своего последнего сохраненного состояния и может повторно вызвать то же непредвиденное исключение. InstanceId: c398fd2a-b654-4981-be13-94146d640375 Имя формы: Send_StreamedDocument ShapeId: bc7a463b-eed2-4222-b2f7-3fdb1e44a3c5 Исключение, выброшенное из: сегмент 1, ход выполнения Выход 25 Внутреннее нулевое сообщение: «часть '' часть сообщения содержит байты данных.
Тип исключения: EmptyPartException Источник: Microsoft.XLANGs.Engine Целевой сайт: System.IO.Stream Persist (System.String ByRef, Boolean) Ниже приведена трассировка стека, которая определяет место возникновения исключения в Microsoft.XLANGs.Core.Part .Persist (String & encoding, Boolean wantEncoding) в Microsoft.BizTalk.XLANGs.BTXEngine.BTXXlangStore.StagePartData (часть часть) в Microsoft.BizTalk.XLANGs.BTXEngine.BTXXlangStore.PrepareMessage (XLANGMessage msg) в Microsoft.BizTalk.XLANGs.BTXEngine.BTXXlangStore.PrepareMessage (XLANGMessage msg). BizTalk.XLANGs.BTXEngine.BTXXlangStore.WriteMessageState (IBTPEPInfoLookup pepLookup, Guid portId, XLANGMessage msg, сегментный сегмент, String opname, String url, IList promoProps, Boolean track, IList toPromoteBromoteXLine. XLANGMessage msg, XlangStore store, Segment seg, OperationInfo op, IList additionalProps, IList toPromote, Boolean ignoreRoutingFailure) в Microsoft.BizTalk.XLANGs.BTXEng ine.BTXPortBase.SendMessage (Int32 iOperation, XLANGMessage msg, Correlation [] initCorrelations, Correlation [] followCorrelations, Context cxt, Segment seg, ActivityFlags flags) в IAS.Integration.Services.Orchestrations.MainOrchestration.segment. XLANGs.Core.SegmentScheduler.RunASegment (сегменты, StopConditions stopCond, Exception & exp) **