我收到标题中带有SAML安全票证的消息。此票证必须在拨出电话中发送而不做任何更改。在BizTalk业务流程中,我将其设置为我发送的消息的出站自定义标头。收到的安全票证包含用换行符(CR + LN)分隔的标签,如下所示:
<SignedInfo>
<OtherTag/>
<SomeTag>ABC</SomeTag>
</SignedInfo>
我正在设置包含此换行符的出站标题:
MessageOut(WCF.OutboundCustomHeaders) = < string with header >
问题是当WCF-Custom适配器使用标题和正文组装完整的SOAP请求时,标记之间的这些换行符将被删除:
<SignedInfo><OtherTag/><SomeTag>ABC</SomeTag></SignedInfo>
这会导致票证无效并被拒绝。
有没有关于如何保留这些换行符的想法?
所以,问题不是你,你的应用程序或BizTalk Server。这是使用Xml的其他服务,然后不遵循Xml规则。不幸的是,他们已经成功解决了你的问题和其他客户的问题。
不要编写自定义的c#类来处理这种通信,这只会产生更多问题。
首先,尝试将标记注入标头的自定义WCF行为或消息检查器。