从入站标头中提取用户标识

时间:2013-03-04 14:39:01

标签: biztalk biztalk-2010 biztalk-2009 biztalk2006r2

我必须从Inbound Header中读取元素......

我正在使用WCF.InboundHeaders将入站标头分配给字符串....

现在我的问题是我的inbounde标题看起来像这样

InboundHeaders

<headers><s:userid xmlns:s="http://www.w3.org/2003/05/soap-envelope">testuser</s:userid>

 <s:applicationid xmlns:s="http://www.w3.org/2003/05/soap-envelope">assistworkerweb</s:applicationid>

<a:Action s:mustUnderstand="1" xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">http://Request</a:Action><a:To s:mustUnderstand="1" xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">

现在我需要从中提取用户ID ..如何从中提取用户ID ..

1 个答案:

答案 0 :(得分:0)

您还没有提到存储字符串的位置或方式(使用WCF.InboundHeaders填充),但是我会使用XPath的简单片段来提取UserId。如果你使用C#帮助器提取它,你可以做一些事情(注意,这是未经测试的,但它几乎就是那样):

XmlDocument doc = new XmlDocument();
doc.Load([WCF.InboundHeaders Xml Fragment]);

// Create an XmlNamespaceManager to add 'soap-envelope' namespace
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("s", "http://www.w3.org/2003/05/soap-envelope");

// Select the UserId
XmlNode userId = doc.SelectSingleNode("/headers/s:userid", nsmgr);
Console.WriteLine(userId.InnerXml);

您可能还希望将Xml片段序列化为.Net对象并以此方式检索UserId。