BizTalk管道IBaseMessage IPropertyContext
当消息到达BizTalk管道时,IBaseMessage实例是否代表传入消息?属性,以及如何理解它?是的,这是正确的。BizTalk管道IBaseMessage IPropertyContext,biztalk,Biztalk,当消息到达BizTalk管道时,IBaseMessage实例是否代表传入消息?属性,以及如何理解它?是的,这是正确的。 IBaseMessage是消息 有关如何创建自定义管道组件的详细说明,请参见: 这应该让您开始。您主要感兴趣的两个部分是IBaseMessage中的BodParty.GetOriginalDataStream()和上下文对象。比如说 Stream originalDataStream=pInMsg.BodyPart.GetOriginalDataStream(); 字符串msg
IBaseMessage
是消息
有关如何创建自定义管道组件的详细说明,请参见:
这应该让您开始。您主要感兴趣的两个部分是
IBaseMessage
中的BodParty.GetOriginalDataStream()和上下文
对象。比如说
Stream originalDataStream=pInMsg.BodyPart.GetOriginalDataStream();
字符串msgastring;
XDocument msgAsXDoc;
StreamReader sr=新StreamReader(原始数据流)
msgAsString=sr.ReadToEnd();
originalDataStream.Position=0;//在传递消息之前重置此设置非常重要!
msgAsXDoc=XDocument.Load(originalDataStream);//现在,您将其保存在XDoc中
originalDataStream.Position=0;
XmlReader xr=XmlReader.Create(原始数据流)
originalDataStream.Position=0;
string strProperty=(string)pInMsg.Context.Read(“propertyName”,”http://PropertyNameSpace");
字符串anotherProperty=“Testing”;
Write(“anotherPropertyName”http://PropertyNamespace“,另一个属性)
pContext.ResourceTracker.Add(xr);
pContext.ResourceTracker.Add(sr);
等等
还有几点需要注意:
- 避免“使用”构造,它们最终会处理底层流并导致错误
- 将任何一次性对象添加到上下文的资源跟踪器中,这将确保在底层流准备好处理时正确调用这些对象上的
Dispose()
- 好吧,是和否
为清楚起见,IBaseMessage是实际消息对象的(.Net)类型实现的接口。它之所以有效,是因为.Net允许将接口用作类型
属性包含在.Context集合中
此外,BizTalk IBaseMessage实现可以有多个部分