【问题标题】:BizTalk Server and SalesForce - INVALID_SESSION_ID: Invalid Session ID found in SessionHeader: Illegal SessionBizTalk Server 和 SalesForce - INVALID_SESSION_ID:在 SessionHeader 中找到无效的会话 ID:非法会话
【发布时间】:2012-07-25 02:22:38
【问题描述】:

我正在研究 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: Invalid Session ID found in SessionHeader: Illegal Session

在 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

有人遇到过这个问题吗?

感谢任何帮助。

干杯,

【问题讨论】:

  • 您的帖子表明 Salesforce 不喜欢您传递给调用的 sessionId,这似乎作为 SoapFault 或其他 FaultContract 返回给 BizTalk。 sessionId 的纠正措施似乎是再次登录()并获取新的 sessionId。如果您不这样做,则可以通过在发送/接收形状配对周围添加异常处理程序来捕获 Soap 错误。 kentweare.blogspot.com/2011/03/…
  • 您发送的 sessionHeader 中的 xml 命名空间似乎不正确。

标签: salesforce biztalk


【解决方案1】:

关于这件事有几点:

我在我的问题中提到的博客文章太旧了,所以 superfell 是正确的,因为需要在 SessionHeader 中添加命名空间,这里也提到了:http://boards.developerforce.com/t5/General-Development/INVALID-SESSION-ID-Invalid-Session-ID-found-in-SessionHeader/td-p/200705 “你的 SessionHeader 和 sessionId 元素在soap头中没有任何命名空间,它们需要在WSDL定义的xml命名空间中。较新的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>";

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

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

干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-26
    • 2019-08-13
    • 2018-08-05
    • 2016-04-23
    • 2015-07-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    相关资源
    最近更新 更多