[英]soap header doesnt appear in http traffic when coming from biztalk
我正在尝试在biztalk中构造一条消息以发送到Web服务。 当我从C#调用Web服务时,我看到的流量(来自fiddler)基本上是这样的:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:AuthenticationInfo xmlns:h="urn:Ticket" xmlns="urn:Ticket" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<userName>user_name</userName>
<password>password</password>
<authentication/>
<locale/>
<timeZone/>
</h:AuthenticationInfo>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CreateTroubleTicket xmlns="urn:Ticket">
<ServiceID>asd</ServiceID>
<ServiceType>service Type</ServiceType>
<Impact>1</Impact>
<Priority>1 - Critical</Priority>
</CreateTroubleTicket>
</s:Body>
</s:Envelope>
这将返回预期的响应。 我在网上找到有关如何使它在BizTalk中工作的说明。 添加肥皂标头( http://threaddump.blogspot.com/2005/01/how-to-send-soap-headers-in-biztalk.html或http://www.apress.com/9781430232643以及第2.13章的演练和代码),我也按照它们进行操作。 但是,我无法创建您在上面看到的标题。 我看到当biz发送到Web服务时,只有琴身通过提琴手进入;
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><ns0:CreateTroubleTicket xmlns:ns0="urn:Ticket">
<ns0:ServiceID>ServiceID_0</ns0:ServiceID>
<ns0:ServiceType>ServiceType_0</ns0:ServiceType>
<ns0:Impact>1</ns0:Impact>
<ns0:Priority>1 - Critical</ns0:Priority>
</ns0:CreateTroubleTicket></s:Body></s:Envelope>
我可以将提升属性分配给想要的字符串。 我知道这是因为,当我查看挂起的消息时(在该消息无法从服务获得合法响应之后),我看到了该属性,它具有在消息上下文中赋予它的值:
要清楚我为达到这一目标所做的工作; 我添加了一个具有目标名称空间“ http://schemas.microsoft.com/BizTalk/2003/SOAPHeader ”的属性架构,并添加了一个名为“ AuthenticationInfo”的元素,该元素的属性架构库设置为“ MessageContextPropertyBase”。 然后,在业务流程中将其分配给消息的提升属性为:
MessageInwHeader(TempBizConsumeHeader.AuthenticationInfo)= @"<ns0:AuthenticationInfo xmlns:ns0=ur..."
因此,如果有人在这里看到错误或知道为什么我没有在请求中看到此标头,请告诉我。 也许我需要一个特殊的发送管道,或者需要定义一个完整的信封? 我认为,使用WCF服务(我所说的不是)有一个现成的属性,WCFOutboundHeaders或类似的东西。 我很想成为我可以使用的其中一种...
如果我理解正确,那么您正在尝试通过BizTalk发送端口将带有自定义标头的消息发送到WebService。
有一个名为WCF.OutboundCustomHeaders
内置属性,您应该使用它,并且您的属性分配将如下所示:
MessageInwHeader(WCF.OutboundCustomHeaders) = "<headers><h:AuthenticationInfo xmlns:h=\"urn:Ticket\" xmlns=\"urn:Ticket\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><userName>user_name</userName></h:AuthenticationInfo></headers>";
如果您将经常使用这些标题,则可能会为此创建一些帮助器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.