2012-07-25 72 views
0

我工作的SalesForce公司和BizTalk Server之间的整合方案2010年我已阅读下列博客的BizTalk Server和Salesforce - INVALID_SESSION_ID:无效的会话ID在SessionHeader发现:非法会话

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:无效会话ID在SessionHeader发现:非法会话

在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

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

任何帮助表示赞赏。

干杯,

+0

您的帖子显示Salesforce不喜欢您传递给该呼叫的* sessionId *,并且这似乎作为SoapFault或其他FaultContract返回给BizTalk。 sessionId的纠正措施似乎是再次登录()并获取新的sessionId。如果您还没有这样做,可以通过在发送/接收形状配对周围添加异常处理程序来捕捉Soap Faults。 http://kentweare.blogspot.com/2011/03/catching-soap-faults-from-crm-40-web.html – StuartLC 2012-07-25 04:38:25

+0

它看起来像你发送的sessionHeader中的XML命名空间不正确。 – superfell 2012-07-25 05:12:05

回答

3

在关于一对夫妇的事情是:

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

一个朋友向我指出这本书“微软的BizTalk 2010:业务系统集成行”里的作者写道:“别忘了把一个名称空间作为Salesforce.com API的SessionHeader节点上是严格有关。这一点,如果命名空间是缺少将返回无效令牌消息”在这本书中的SOAP头的格式正确表述为:

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

基本上我是缺少namesace的xmlns =“瓮:企业。 soap.sforce.com”。

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

干杯。