У меня есть поток, содержащий текст, теперь я хочу отредактировать некоторый текст (замените некоторые значения) в этом потоке.Как можно эффективно редактировать текст в потоке в компоненте конвейера 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 –