저는 BizTalk를 처음 사용하고 사용자 지정 파이프 라인 구성 요소를 만드는 방법에 익숙합니다. 다음과 비슷한 코드 예제를 보았습니다.BizTalk 파이프 라인 구성 요소에 스트림을 처리 하시겠습니까?
public void Disassemble(IPipelineContext pContext, IBaseMessage pInMsg)
{
Stream originalDataStream = pInMsg.BodyPart.GetOriginalDataStream();
StreamReader strReader = new StreamReader(originalDataStream);
string strOriginalData = strReader.ReadToEnd();
byte[] bufferOriginalMessage = new byte[strOriginalData.Length];
bufferOriginalMessage = ASCIIEncoding.Default.GetBytes(strOriginalData);
Stream ms = new MemoryStream();
ms.Write(bufferOriginalMessage, 0, strOriginalD
//other stuff here
ms.Seek(0, SeekOrigin.Begin);
pInMsg.BodyPart.Data = ms;
}
그러나이 메서드는 StreamReader를 닫거나 처리하지 않습니다. 이 방법은 단순히 종료됩니다.
일반적으로 StreamReader 및 다른 클래스를 사용하는 경우 스트림이 자동으로 삭제되도록 using 문을 사용하는 것이 가장 좋습니다.
BizTalk에서이 StreamReader를 처리하지 않는 이유가 있습니까?
이 시점에 대한 정보가 없습니다. 누구든지 도와 줄 수 있습니까?
교육을 위해, 내가 언급 한 예가 StreamReader 및 MemoryStream 클래스를 사용한다는 것을 알게되었습니다. 견고하고 엔터프라이즈 수준의 파이프 라인 구성 요소는 읽기 전용 * * 전달 전용 * * 탐색 불가능 스트림을 사용하여 가장 잘 작성되었음을 유의하십시오. 스트림 파이프 라인 구성 요소에 대한 자세한 내용은 http://blogs.objectsharp.com/cs/blogs/nbarden/archive/2008/04/14/developing-streaming-pipeline-components-part-1.aspx를 참조하십시오. –