我正在尝试在biztalk中构建一条消息,以发送到Web服务。当我从c#调用Web服务时,我看到流量(来自提琴手)基本上就是这样:
<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中使用它的说明,即。添加soap标题(http://threaddump.blogspot.com/2005/01/how-to-send-soap-headers-in-biztalk.html或http://www.apress.com/9781430232643,其中有第2.13章的演练和代码),我已按照它们进行操作。但是我无法创建您在上面看到的标题。当biz发送给网络服务时,我看到身体通过提琴手来了;
<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”的元素,其Property Schema Base设置为“MessageContextPropertyBase”。然后,我在业务流程中将此分配给消息的提升属性:
MessageInwHeader(TempBizConsumeHeader.AuthenticationInfo)= @"<ns0:AuthenticationInfo xmlns:ns0=ur..."
所以,如果有人在这里看错了,或者知道为什么我在请求中没有看到这个标题让我知道。也许我需要一个特殊的发送管道,或者我需要定义一个完整的信封?我认为使用WCF服务(我所称的那个服务不是),有一个现成的属性,WCFOutboundHeaders或者其他类似的东西。我喜欢那里有一个我能用的......
答案 0 :(得分:2)
如果我理解正确,您正尝试通过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>";
如果你经常使用这些标题,可能你可能会为此创建一些帮助。