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

ers*_*had 1 biztalk salesforce

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

http://seroter.wordpress.com/2009/10/11/orchestrating-the-cloud-part-ii-creating-and-using-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>";
Run Code Online (Sandbox Code Playgroud)

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

通过URI https://abc.xyz发送到发送端口“ WcfSendPort_SP”上的适配器“ WCF-BasicHttp”的消息已挂起。

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

在Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult结果)

我做了一些进一步的研究,并发现了这些帖子:

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

有没有人遇到这个问题?

任何帮助表示赞赏。

干杯,

ers*_*had 5

关于此的几件事:

我在我的问题中所引用的博客文章太旧了,所以超速是正确的,因为需要在SessionHeader中添加名称空间,这在这里也提到了:http : //boards.developerforce.com/t5/General-Development / INVALID-SESSION-ID-Invalid-Session-ID-found-in-SessionHeader / td-p / 200705 “ soap标头中的SessionHeader和sessionId元素不在任何命名空间中,它们必须位于由WSDL。更新的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>";
Run Code Online (Sandbox Code Playgroud)

基本上,我缺少名称xmlns ='urn:enterprise.soap.sforce.com'。

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

干杯。