BizTalk Server和SalesForce - INVALID_SESSION_ID:在SessionHeader中找到无效的会话ID:非法会话

时间:2012-07-25 02:22:39

标签: salesforce biztalk

我正在研究SalesForce和BizTalk Server 2010之间的集成场景。我已阅读以下博客

http://seroter.wordpress.com/2009/10/11/orchestrating-the-cloud-part-ii-creating-and-consuming-a-salesforce-com-service-from-biztalk-server/

http://soa-thoughts.blogspot.com.au/2010/08/biztalk-salesforce-and-msmq-part-i.html

http://soa-thoughts.blogspot.com.au/2010/08/biztalk-salesforce-and-msmq-part-ii.html

我将sessionId设置为消息分配形状,如帖子中所述:

SfdcMessage(WCF.Headers) = "<headers><SessionHeader><sessionId>00DK0000005Du2o!AREAQLnrXpVFRAAgwT_Z7iaK0do1IltgHqDLyDfLhbkUGqvFMvzNURdgRtKdPc47cO9sZpOPJ0x8q496vQJsXKGrXt4BcdLW</sessionId></SessionHeader></headers>";

但是,当我的发送端口调用SalesForce自定义Web服务时,我收到以下错误

在发送端口“WcfSendPort_SP”上发送到URI https://abc.xyz的适配器“WCF-BasicHttp”的消息被暂停。

错误详细信息:System.ServiceModel.FaultException:sf:INVALID_SESSION_IDINVALID_SESSION_ID:在SessionHeader中找到无效的会话ID:非法会话

at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)

我做了更多研究并发现了这些帖子:

http://boards.developerforce.com/t5/General-Development/INVALID-SESSION-ID-Invalid-Session-ID-found-in-SessionHeader/td-p/74031

http://boards.developerforce.com/t5/Perl-PHP-Python-Ruby-Development/INVALID-SESSION-ID-Invalid-Session-ID-found-in-SessionHeader/td-p/66846

http://boards.developerforce.com/t5/General-Development/INVALID-SESSION-ID-Invalid-Session-ID-found-in-SessionHeader/td-p/200705

有没有人遇到过这个问题?

感谢任何帮助。

干杯,

1 个答案:

答案 0 :(得分:4)

有关此事的几件事:

我在我的问题中提到的博客文章太旧了,所以superfell是正确的,因为名称空间需要添加到SessionHeader中,这里也提到了:http://boards.developerforce.com/t5/General-Development/INVALID-SESSION-ID-Invalid-Session-ID-found-in-SessionHeader/td-p/200705 “你的SessionHeader和soap标头中的sessionId元素不在任何名称空间中,它们需要在WSDL定义的xml namesapce中。较新的API端点对此更为严格。“

一位朋友向我指出了“Microsoft BizTalk 2010:业务系统集成线”一书,其中作者写道:“不要忘记在SessionHeader节点上放置命名空间,因为Salesforce.com API是严格的如果命名空间丢失,将返回无效的令牌消息。“在书中,SOAP标头的正确格式表示为:

SFDC_QueryRequest(WCF.Headers) = "<headers><SessionHeader xmlns='urn:enterprise.soap.sforce.com'><sessionId>" + Chapter10_SFDC.TokenManager.TokenManager.SessionId + "</sessionId></SessionHeader></headers>";

基本上我错过了namesace xmlns ='urn:enterprise.soap.sforce.com'。

同样在配置发送端口时,请确保导入自定义绑定* _Custom.BindingInfo.xml而不是.BindingInfo.xml,否则您仍会遇到sessionId问题。

干杯。