排查 Siebel 适配器的操作问题
本部分提供一个集中位置,用于了解在使用适用于 Siebel eBusiness 应用程序的 Microsoft BizTalk 适配器时可能遇到的操作问题。
启用跟踪
有关 Siebel 适配器中的跟踪支持的信息,请参阅 Siebel 适配器的诊断跟踪和消息日志记录。
已知问题
以下是使用 Siebel 适配器时可能会遇到的一些问题和建议的解决方案。
加载适配器绑定时出错
问题
尝试启动添加适配器服务引用 Visual Studio 插件或使用适配器服务 BizTalk 项目外接程序时,GUI 会提供以下错误:
There was an error loading the binding, <binding name>, from your system configuration.
ConfigurationErrorsException: Exception has been thrown by the target of an invocation.
原因
启动“添加适配器服务引用”插件或使用适配器服务加载项时,WCF 将加载所有已安装适配器的适配器绑定。 反过来,适配器绑定依赖于特定的企业应用程序客户端软件。 因此,你可能由于以下一个或两个原因而面临此问题:
安装适配器的计算机上未安装所需的 LOB 客户端软件。
你对适配器进行了“典型”或“完整”安装,这将安装 BizTalk 适配器包中的所有适配器。 但是,客户端库可能只为一个企业应用程序安装。 因此,GUI 无法加载其他适配器的绑定。
解决方法
确保在安装了 BizTalk 适配器包的计算机上安装了所需的客户端版本。
请确保对适配器进行自定义安装,以便仅安装所需的适配器。
Siebel 适配器不显示在 BizTalk Server 管理控制台的适配器列表中
问题
与 BizTalk Server 随附的早期版本的适配器不同,BizTalk 适配器包随附的 Siebel 适配器不会显示在 BizTalk Server 管理控制台的适配器列表中。
原因
最新的 Siebel 适配器是 WCF 自定义绑定。 因此,尽管 BizTalk Server 管理控制台显示 WCF-Custom 适配器,但它不显示 WCF 自定义绑定,因此不显示基于 WCF 的 Siebel 适配器。
解决方法
可以按照将 Siebel 适配器添加到 BizTalk Server 管理控制台中提到的步骤,将 Siebel 适配器显式添加到 BizTalk Server 管理控制台。
连接到 Siebel 系统时出错
问题
尝试连接到 Siebel 系统时,“添加适配器服务引用插件”或“使用适配器服务”加载项会出现以下错误:
Connecting to the system LOB has failed. Retrieving the COM class factory for component with CLSID {ID} failed due to the following error: 80040154
原因
计算机上可能未安装 Siebel Web 客户端。
解决方法
确保计算机上已安装 Siebel Web 客户端的支持版本。 有关 Siebel 支持的客户端和服务器版本,请参阅安装指南。 系统驱动器>:\Program Files\Microsoft BizTalk Adapter Pack\Documents 中提供了<安装指南。
检索节点数超过 65536 的 XRL 时出错
问题
适配器在检索节点数超过 65536 的 XML 输出时出现以下错误。
Maximum number of items that can be serialized or deserialized in an object graph is '65536'.
Change the object graph or increase the MaxItemsInObjectGraph quota.
原因
适配器无法序列化和反序列化项数超过 65536 的对象。
解决方法
可以通过设置 maxItemsInObjectGraph
参数来解决此问题。 可以通过以下两种方式之一进行设置:
通过更改
maxItemsInObjectGraph
服务类的 属性中的 参数来ServiceBehavior
设置此参数。将以下内容添加到应用程序的 app.config 文件中。
<behaviors> <endpointBehaviors> <behavior name="NewBehavior"> <dataContractSerializer maxItemsInObjectGraph="65536000" /> </behavior> </endpointBehaviors> </behaviors>
示例 app.config 如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="NewBehavior">
<dataContractSerializer maxItemsInObjectGraph="65536000" />
</behavior>
</endpointBehaviors>
</behaviors>
<client>
<endpoint behaviorConfiguration="NewBehavior" binding="siebelBinding"
contract="IOutboundContract" name="siebel_ICalculator" />
</client>
</system.serviceModel>
</configuration>
在 BizTalk 中为 WCF-Custom 端口指定连接 URI 时出错
问题
BizTalk Server指定连接 URI 以连接到 Siebel 系统时,会出现以下错误。
Error saving properties.
(System.ArgumentException) The specified address is invalid.
(System.ArgumentException) Invalid address;
"<connection URI>" is not a well-formed absolute uri.
原因
连接 URI 不符合标准编码格式。 例如,参数的值可能包含空格。
解决方法
确保指定的连接 URI 遵循标准编码格式。 例如,空格必须替换为“%20”。
在 Siebel 系统上执行操作时出错
问题
使用 BizTalk Server 在 Siebel 系统上执行任何操作时,适配器会出现以下错误。
对于BizTalk Server
System.ArgumentNullException: Value cannot be null.
原因
未指定消息的 WCF 操作。 WCF 要求为每个操作指定 SOAP 操作,以通知适配器要对 LOB 应用程序执行的操作。
解决方法
在发送端口中指定 SOAP 操作,或指定为 BizTalk 业务流程中的消息上下文属性。 有关说明,请参阅 为 Siebel 配置 SOAP 操作。 有关每个操作的操作列表,请参阅 消息和消息架构 。
由于指定操作中的操作名称不正确,XmlReaderParsingException
问题
BizTalk Server管理控制台在向 Siebel 系统发送消息时出现以下错误:
Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException: Invalid argument:
<BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Operation Name="<operation_name>" Action="<action>" />
</BtsActionMapping>
原因
如果通过导入由使用适配器服务 BizTalk 项目外接程序创建的端口绑定文件来配置 WCF-Custom 端口,则端口中的操作将按以下格式指定:
<BtsActionMapping>
<Operation Name="Op1" Action="http://MyService/Svc/Op1" />
</BtsActionMapping>
在上述格式中,操作名称受生成架构时选择的操作的约束。 例如,如果为 Siebel 业务组件上的查询操作生成架构,则操作中的操作名称将为“Query”。 但是,在 Visual Studio 的 BizTalk 业务流程中创建的逻辑端口中的操作名称可能不同。
解决方法
请确保 Visual Studio) 的 BizTalk 业务流程中的逻辑端口 (中的操作名称与 BizTalk Server 管理控制台) 中的物理端口 (相同。
使用 Siebel 适配器的应用程序不会终止
问题
将 Siebel 适配器与 Siebel 客户端版本 7.5 配合使用的应用程序不会终止。
原因
这是因为 Siebel 客户端出现问题,即从 Siebel 服务器注销时进程不会终止。
解决方法
请确保已安装 Siebel 服务器的修补程序 7.5.3.17 以及快速修复 QF0H05。
如果重新启动 Siebel 服务器,Siebel 适配器可能会挂起
问题
如果在 Siebel 适配器使用 向 Siebel 服务器发送消息时重新启动 Siebel 服务器,则 Siebel 适配器可能会挂起。
解决方法
重启 BizTalk 应用程序主机实例。 为此,请在BizTalk Server管理控制台中,在控制台树中展开“BizTalk 组”,展开“平台设置”,然后单击“主机实例”。 在右窗格中,右键单击主机名,然后选择“ 重启”。
即使使用“使用适配器服务”加载项生成的绑定文件来创建端口,适配器也无法识别物理端口上的操作
问题
在使用适配器服务外接程序为 Siebel 系统上的特定操作生成架构后,加载项还会创建端口绑定文件。 可以使用 BizTalk Server 管理控制台导入此绑定文件,以在 BizTalk Server 中创建物理端口。 但是,使用此类端口将消息发送到 Siebel 系统时,适配器无法理解端口上指定的操作,并出现类似于以下内容的错误:
Microsoft.ServiceModel.Channels.Common.UnsupportedOperationException: Incorrect Action
<BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Operation Name="<op_name>" Action="<action>" />
</BtsActionMapping>. Correct the specified Action, or refer to the documentation on the allowed formats for the Actions.
原因
在 BizTalk 业务流程中创建逻辑端口时,请为这些端口上的操作指定某些名称,或者只需使用默认名称(如 Operation_1、Operation_2 等)。但是,在“使用适配器服务加载项”生成的绑定文件中,操作名称与为其生成元数据的操作的名称相同。 例如,如果为帐户业务组件上的“插入”操作生成元数据,则操作将设置为以下内容:
<Operation Name="Insert" Action="http://Microsoft.LobServices.Siebel/2007/03/BusinessObjects/Account/Account/Insert" />
导入绑定文件时,在物理端口上设置相同的操作。 因此,逻辑端口上的操作名称 (Operation_1、Operation_2等 ) 与物理端口上的操作中指定的操作名称不匹配,从而导致错误。
解决方法
确保逻辑端口中的操作名称与在物理端口中作为操作的一部分指定的操作名称相同。 执行下列操作之一:
将 BizTalk 业务流程中逻辑端口中的操作名称从 Operation_1 等更改为为其生成元数据的操作,例如 Insert。
将物理端口上的操作中的操作名称更改为逻辑端口中的操作名称。 例如,可以将物理端口中的操作更改为如下所示:
<Operation Name="Operation_1" Action="http://Microsoft.LobServices.Siebel/2007/03/BusinessObjects/Account/Account/Insert" />
Siebel 适配器不处理名称中带有 XML 编码字符串的 Siebel 对象
问题
Siebel 适配器无法执行涉及 Siebel 对象的操作, (业务对象、业务组件、业务服务、选择列表、方法、字段、参数等) 名称中具有 XML 编码字符串。 例如,Siebel 适配器将无法调用名称Time_x0020_Stamp的业务服务方法。
解决方法
确保 Siebel 对象的名称中不包含 XML 编码字符串。
BizTalk 项目中的 RootNode TypeName 错误
问题
在 Visual Studio 中的 BizTalk 项目中,如果从使用适配器服务加载项生成的架构包含 RootNode TypeName 属性的无效字符或保留字,则在编译项目时将发生以下错误:
Node <node reference> - Specify a valid .NET type name for this root node.
The current .NET type name of this root node is invalid (it is a reserved BizTalk Keyword or is an invalid C# identifier).
解决方法
右键单击错误中引用的 rood 节点,然后选择“ 属性”。
对于 RootNode TypeName 属性,请删除任何非法字符或保留字,例如 dot (.) 。
在 Visual Studio 中使用适配器时绑定警告无效
问题
使用适配器在 Visual Studio 中创建应用程序并打开适配器生成的配置文件 (app.config) 时,会看到类似于以下内容的警告:
The element 'bindings' has invalid child element 'siebelBinding'. List of possible elements expected: 'basicHttpBinding, customBinding, ...
原因
出现此警告是因为 Siebel 适配器绑定 siebelBinding
不是 Windows Communication Foundation (WCF) 附带的标准绑定。
解决方法
可以放心地忽略此警告。