我對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。 – 2010-12-18 21:48:29