텍스트가 포함 된 스트림이 있습니다. 이제 해당 스트림에서 일부 텍스트 (일부 값 바꾸기)를 편집하고 싶습니다.BizTalk 파이프 라인 구성 요소에서 스트림의 텍스트를 효율적으로 수정하려면 어떻게해야합니까?
스트림을 중단하지 않고 가장 효율적인 방법은 무엇입니까? 이것을 BizTalk
의 사용자 지정 파이프 라인 구성 요소에 사용하고 싶습니다.
public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
{
string msg = "";
using (VirtualStream virtualStream = new VirtualStream(pInMsg.BodyPart.GetOriginalDataStream()))
{
using(StreamReader sr = new StreamReader(VirtualStream))
{
msg = sr.ReadToEnd();
}
// modify string here
msg = msg.replace("\r\n","");
while (msg.Contains(" <"))
msg = msg.Replace(" <", "<");
VirtualStream outStream = new VirtualStream();
StreamWriter sw = new StreamWriter(outStream, Encoding.Default);
sw.Write(msg);
sw.Flush();
outStream.Seek(0, SeekOrigin.Begin);
pInMsg.BodyPart.Data = outStream;
pContext.ResourceTracker.AddResource(outStream);
}
return pInMsg;
}
이
코드,하지만 당신은 내가sr.ReadToEnd()
을 수행 할 때 내가 스트림을 파괴하고 볼 수 있습니다.
더 좋은 방법이 있나요?
일부 코드 샘플을 좀 더 자세히 설명해 주실 수 있습니까? 나는 스트리밍 경험이 없다 .. thx –