Я довольно плохо знаком с 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?
Я не нашел никакой информации по этому вопросу. Кто-нибудь может помочь?