本文列出了使用 Microsoft BizTalk Server 2013 时的已知问题。
原始产品版本:
BizTalk Server 2013
原始 KB 编号:
2954101
BizTalk Server 2013 使用 .NET
XslCompiledTransform
类来提高转换性能。 类和以前使用的
XslTransform
类在
XslCompiledTransform
行为上存在一些差异。 以下是与此差异和建议的解决方案相关的一些已知问题:
脚本
functoid
Boolean 参数的更改
当输入 XML 节点包含任何 false 值或输入 XML 节点为空时,脚本
functoid
中的布尔参数为 true。
不支持专用函数
在 a 中使用专用函
functoid
数时,映射会失败,并收到以下错误消息:
无法调用扩展对象“http://schemas.microsoft.com/BizTalk/2003/userCSharp”的“MyPrivateFunct”方法,因为它不是公共的。
该
XslCompiledTransform
类仅支持调用公共方法。 此限制记录在
从 XslTransform 类迁移
时。
将函数声明为公共函数而不是专用函数。
不支持返回 null
从
functoid
某个映射返回 null 值时,映射将失败,并收到以下泛型错误消息:
ExceptionType:Microsoft.XLANGs.Core.XTransformationFailureException
异常:执行转换 My.Map 时遇到错误。 错误:转换失败。
在 Visual Studio 中测试同一地图时,它会提供更具描述性的错误消息:
调用的目标引发了异常。 扩展函数不能返回 null 值。
XslCompiledTransform 类不支持从转换中调用的函数返回 null 值。
返回
String.Empty
或其他一些替代值来表示 null 方案。 如果需要,请使用全局变量使 null 值在多个函数中可用。
更改脚本 functoid
XPathNodeIteraton
参数
XPathNodeIterator
脚本 functoid 中的参数使用该
XPathArrayIterator
类型。 在早期BizTalk Server版本中,它使用了该
XPathSelectionIterator
类型。 由于此更改,节点。必须添加 MoveNext () 调用,如以下代码所示,以避免出现以下错误消息:
枚举尚未启动。 调用 MoveNext。
public static bool WriteNode(XPathNodeIterator node)
node.MoveNext(); //needs to be added in BizTalk Server 2013 to avoid error
XPathNavigator xpn = node.Current;
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(xpn.OuterXml);
return true;
调用函数 MoveNext()
。
函数重载由参数数而非类型区分。
以下函数重载包含不同类型的参数:
public short MyOverloadedFunction(int testvalue)
public short MyOverloadedFunction(string testvalue)
由于这些函数重载都具有相同的参数计数,因此如果在转换中使用参数,映射将失败并收到以下错误消息:
不明确的方法调用。 扩展对象“http://schemas.microsoft.com/BizTalk/2003/ScriptNS0”包含多个“MyOverloadedFunction”方法,这些方法具有 1 个参数 () 。
该 XslCompiledTransform
类仅根据参数数区分函数。 此限制记录在 从 XslTransform 类迁移时。
确保所有函数重载都包含不同数量的参数。
回退到 XslTransform
类
可以将 BizTalk Server 2013 转换引擎配置为使用旧XslTransform
类。 我们不建议使用此方法,因为环境将失去类提供的 XslCompiledTransform
许多性能和内存使用情况改进。 此外,.NET XslTransform
类已弃用。 因此,不会为其发布新的更新或修补程序。
如果无法使用前面提到的解决方案更新地图,则可以通过在以下位置添加值为 1 的 DWORD UseXslTransform
来进行此更改:
对于 64 位 BizTalk 主机实例:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BizTalk Server\3.0\Configuration
对于 32 位 BizTalk 主机实例和 Visual Studio 的测试映射功能:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\BizTalk Server\3.0\Configuration
企业单一Sign-On (SSO) 中的已知问题
以下是 2013 BizTalk Server特定于 SSO 的一些已知问题:
升级到 BizTalk Server 2013 不会升级 SSO
从 BizTalk Server 2009 或 2010 BizTalk Server就地升级到 2013 BizTalk Server可能无法在同一台计算机上升级 SSO。 如果此问题导致 SSO 主机密服务器未升级,则尝试升级组中的其他 BizTalk 服务器时,会收到以下错误消息:
请升级主机密服务器
引用Microsoft.BizTalk.Interop.SSOClient.dll的任何BizTalk Server组件都会失败,你将收到以下错误消息:
无法加载文件或程序集“Microsoft.BizTalk.Interop.SSOClient,Version=7.0.2300.0”
此问题已在 BizTalk Server 2013 媒体的更高版本中解决。 因此,请确保使用最新的可用媒体进行升级。
无法加载 Microsoft.BizTalk.Interop.SSOClient.dll
版本 5.0.1.0
在以下情况下,可能会收到以下错误消息:
无法加载文件或程序集“Microsoft.BizTalk.Interop.SSOClient.dll,Version=5.0.1.0”
从 2009 BizTalk Server或 2010 BizTalk Server就地升级后,WCF 接收位置或 WCF 发送端口会引发错误。 之所以发生这种情况, Microsoft.BizTalk.Adapter.Wcf.Runtime.dll
是因为文件未正确升级到版本 3.10.229.0。
如果版本Microsoft.BizTalk.Adapter.Wcf.Runtime.dll
早于 3.10.229.0,请从位于) 的 BizTalk Server 2013 安装介质 (<DVD-Drive>\BizTalk Server\MSI\Program Files
复制文件的正确版本,将其放入BizTalk Server安装文件夹中,然后将其安装到全局程序集缓存 (GAC) 。 可以使用gacutil.exe工具将.dll文件安装到 GAC 中,如下所示:
gacutil.exe /if Microsoft.BizTalk.Adapter.Wcf.Runtime.dll
此错误由之前在 2009 BizTalk Server或 2010 BizTalk Server使用的自定义代码引发。 这是因为 BizTalk Server 2009 和 BizTalk Server 2010 具有 .NET 版本 5.0.1.0 Microsoft.BizTalk.Interop.SSClient.dll
的文件。 但是,BizTalk Server 2013 使用文件的 .NET 版本 7.0.2300.0。
更新并重新生成自定义代码,以引用文件的 BizTalk Server 2013 版本 (7.0.2300.0) Microsoft.BizTalk.Interop.SSClient.dll
。 如果重新生成不是一个选项,请通过对相应配置文件的部分进行以下修改,重定向到 <runtime>/<assemblyBinding>
版本 7.0.2300.0:
<dependentAssembly>
<assemblyIdentity name="Microsoft.BizTalk.Interop.SSOClient" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="5.0.1.0" newVersion="7.0.2300.0"/>
</dependentAssembly>
由于文件依赖项不正确,Microsoft BizTalk 企业服务总线 (ESB) 会引发此错误。
此问题在 BizTalk Server 2013 累积更新 2 (CU2) 及更高版本中修复。
有关此问题的详细信息,请参阅:在 2013 BizTalk Server使用 ESB 配置工具时无法加载文件或程序集 Microsoft.BizTalk.Interop.SSOClient Version=5.0.1.0 错误。
有关如何获取最新的累积更新来解决此问题,请参阅 Service Pack 和BizTalk Server的累积更新列表。
无法加载 SSOPSServer.dll
可能会收到以下记录在事件日志中的错误消息:
无法加载 \Program Files\Common Files\Enterprise Single Sign-On\SSOPSServer.dll 错误代码:0x8007007E,找不到指定的模块。
此错误是无害的,可以忽略。 为了防止此错误继续发生,请将原始安装介 质中的SSOPSServer.dll 文件复制到 \Program Files\Common Files\Enterprise Single Sign-On
计算机上的文件夹中。 对于 64 位安装的 SSO,请使用安装介质上的 SSOPSServer.dll 文件 \Platforms\SSO64\Files
。 对于 32 位安装的 SSO,请使用该文件。\Platforms\SSO\Files
主机集成服务器 2013 SSO 无法使用 BizTalk SSO 主机密
当 Host Integration Server 2013 SSO 服务尝试访问 BizTalk Server 2013 SSO 主机密服务时,将引发以下错误消息:
未能检索主机密。 验证主机密服务器名称是否正确且可用。 机密服务器名称:BTSSSOSERVER 错误代码:0x00000057,参数不正确。
Host Integration Server 2013 包含版本 9.0.2096.0 的 SSO。 但是,BizTalk Server 2013 包括版本 9.0.1865.0。 因此,在主机集成服务器和 BizTalk 服务器上的 SSO 服务访问共享主机密服务器的混合环境中,服务器必须运行 Host Integration Server 2013 SSO 服务。 请注意,在 BizTalk 服务器上安装主机集成服务器会将现有 SSO 服务升级到版本 9.0.2096.0,并且还需要将远程 Master Secret SSO 服务器升级到 9.0.2096.0。
其他已知问题
升级到 BizTalk Server 2013 不会部署新的Microsoft.BizTalk.GlobalPropertySchemas.dll
从 BizTalk Server 2009 或 2010 BizTalk Server到 2013 BizTalk Server就地升级不会将新Microsoft.BizTalk.GlobalPropertySchemas.dll
文件正确部署到BizTalkMgmtDb
数据库中。 当 BizTalk 访问任何新的全局属性时,这可能会导致错误。 使用 WCF.HttpHeaders
时,可能会发生这种情况,即与该 SB-Messaging Adapter
属性关联的任何属性,或任何其他新属性。 失败和以下错误消息 SB-Messaging Adapter
如下:
适配器“SB-Messaging”引发错误消息。 详细信息“System.Runtime.InteropServices.COMException (0xC0C01620) :HRESULT 异常:0xC0C01620
at Microsoft.BizTalk.TransportProxy.Interop.IBTTransportBatch.MoveToSuspendQ (IBaseMessage msg)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.Batch2.MoveToSuspendQ (IBaseMessage 消息, Object userData)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkReceiveBatch.SuspendMessageIfNeeded (IBaseMessage message, StreamAndUserData streamAndUserData, Int32 messageStatus) ”。
适配器“SB-Messaging”引发错误消息。 详细信息“System.Exception:按命名空间加载属性信息列表失败或在列表中找不到属性。 验证架构是否已正确部署。
at Microsoft.BizTalk.Adapter.Wcf.Runtime.BizTalkServiceInstance.EndOperation (IAsyncResult 结果)
at AsyncInvokeEndTwoWayMethod (Object, Object[], IAsyncResult)
在 System.ServiceModel.Dispatcher.AsyncMethodInvoker.InvokeEnd (对象实例,Object[]& 输出,IAsyncResult 结果)
在 System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeEnd (MessageRpc rpc&)
在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage7 (MessageRpc rpc&)
at System.ServiceModel.Dispatcher.MessageRpc.Process (Boolean isOperationContextSet) ”
使用AddGlobalPropertySchemas.exe工具在升级后手动部署.dll文件。 从 AddGlobalPropertySchemas.exe下载该工具。 必须传入 BizTalk 管理数据库服务器名称和数据库名称,如下所示:
AddGlobalPropertySchemas.exe /server:MyServer /database:BizTalkMgmtDb
如果数据库位于SQL Server的命名实例上,请指定 MyServer\MyInstance,而不仅仅是 MyServer。
ESB 2.2 配置文件会导致 ESB 故障
ESB Toolkit 2.2 使用需要修改默认esb.config文件的 Unity 2.0。 如果不进行这些修改,可能会出现以下问题:
ESB 2.2 配置失败,收到以下错误消息:
使用“6”参数调用“PushAllConfiguration”的异常 () :“无法识别的元素'typeConfig'。 (C:\Program Files (x86) \Microsoft BizTalk ESB Toolkit\esb.config第 151 行)
ItinerarySelectReceiveXML
当接收管道用于调用业务规则引擎以使用 ESB BRI 解析程序) 动态选择行程 (时,将引发以下错误:
调用的目标引发了异常。
源:Microsoft.Practices.ESB.Resolver.ResolverMgr
方法:System.Collections.Generic.Dictionary'2[System.String,System.String] 解析 (Microsoft.Practices.ESB.Resolver.ResolverInfo、Microsoft.BizTalk.Message.Interop.IBaseMessage、Microsoft.BizTalk.Component.Interop.IPipelineContext)
错误源:mscorlib
Error TargetSite: System.Object InvokeMethod (System.Object, System.Object[], System.Signature, boolean)
StackTrace 错误:在 System.RuntimeMethodHandle.InvokeMethod (对象目标、Object[] 参数、Signature sig、布尔构造函数)
at System.Reflection.RuntimeConstructorInfo.Invoke (BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.CreateInstanceImpl (BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
at System.Activator.CreateInstance (Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
在 System.Activator.CreateInstance (类型中,Object[] args)
at Microsoft.Practices.ESB.Resolver.ResolverFactory.Create (String key)
at Microsoft.Practices.ESB.Resolver.ResolverMgr.GetResolver (ResolverInfo 信息)
at Microsoft.Practices.ESB.Resolver.ResolverMgr.Resolve (ResolverInfo info, IBaseMessage message, IPipelineContext pipelineContext)
有关此问题的详细信息以及有关如何修改esb.config文件以解决该文件的说明,请参阅 ESB Toolkit BRE 迭代解决程序失败并出现异常,ESB 配置失败并出现无法识别的元素“typeConfig”。
EDIFACT
已挂起具有 UNB 3.3 段的消息
升级到 BizTalk Server 2013 后,EDIFACT
包含 UNB 3.3 段的消息失败,你将收到以下错误消息。 此消息EDIFACT
在 2010 BizTalk Server处理时没有问题:
按命名空间加载属性信息列表失败或在列表中找不到属性。 验证架构是否已正确部署。
使用以下步骤重启相关主机实例:
在BizTalk Server管理控制台中,导航到 BizTalk 组>应用程序>BizTalk EDI 应用程序>资源。
右键单击 “资源”,然后单击 “添加>BizTalk 程序集”。
在 “添加资源” 窗口中,单击 “添加”,选择默认位置 C:\Program Files (x86)\Microsoft BizTalk Server 2013
) (Microsoft.BizTalk.Edi.BaseArtifacts.dll文件,然后单击 “打开”。
选中“ 覆盖所有” 复选框。
在“添加资源”复选框 中选择“添加到全局程序集缓存 ”,然后单击 “确定”。