在BizTalk管道组分中处理流?
-
18-09-2020 - |
题
我对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和其他类时,最好使用使用语句,以便自动处理流。
有一个特定的原因(也许在biztalk中)为什么你不会丢弃这个StreamReader?
我没有找到此时的任何信息。任何人都可以帮忙吗?
解决方案
一般来说,是的,靠近您不再需要的读者和流的良好做法。也就是说,每次可能不一定需要100%。例如,关闭读者将正常关闭底层流,但是可能已经意识到了它已经意识到了流,并将在其自身上关闭它。
是什么是良好的做法,但是,要添加在管道组件中使用的任何流,终身将消息与资源跟踪器,因此BizTalk可以在流水线执行完成时自动处理它们,并且已处理消息。
不隶属于 StackOverflow