public IBaseMessage ExecuteForwardOnly(IPipelineContext pc, IBaseMessage inmsg) { TraceStream traceStream = new TraceStream(inmsg.BodyPart.GetOriginalDataStream(), true); Microsoft.BizTalk.Streaming.CForwardOnlyEventingReadStream eventStream = new Microsoft.BizTalk.Streaming.CForwardOnlyEventingReadStream(traceStream); eventStream.BeforeFirstReadEvent += new Microsoft.BizTalk.Streaming.BeforeFirstReadEventHandler(eventStream_BeforeFirstReadEvent); eventStream.ReadEvent += new Microsoft.BizTalk.Streaming.ReadEventHandler(eventStream_ReadEvent); eventStream.AfterLastReadEvent += new Microsoft.BizTalk.Streaming.AfterLastReadEventHandler(eventStream_AfterLastReadEvent); inmsg.BodyPart.Data = eventStream; return(inmsg); }
public IBaseMessage ExecuteNotForwardOnly(IPipelineContext pc, IBaseMessage inmsg) { TraceStream traceStream = new TraceStream(inmsg.BodyPart.GetOriginalDataStream(), false); string archivePath = Path.Combine(ArchiveTo, Guid.NewGuid().ToString() + ".txt"); FileStream fileStream = new FileStream(archivePath, FileMode.Create, FileAccess.Write); int length = 4096; Byte[] buffer = new Byte[length]; int byteRead = traceStream.Read(buffer, 0, length); while (byteRead > 0) { fileStream.Write(buffer, 0, byteRead); byteRead = traceStream.Read(buffer, 0, length); } traceStream.Position = 0; inmsg.BodyPart.Data = traceStream; fileStream.Close(); return(inmsg); }