0

一位同事让我查看在我们的一个 CI 代理上构建的失败 BizTalk 应用程序。长话短说,在导出 .MSI 文件后,部署脚本会尝试导入应用程序的绑定文件。它只旋转了一个小时,然后退出并出现以下错误:

错误:无法更新绑定信息。类型异常 ||'Microsoft.BizTalk.CachingService.NotificationFailedException||' 被抛出。

这些脚本通过以下方式使用 BizTalk PowerShell 管理单元:

Add-PSSnapin –Name BizTalkFactory.PowerShell.Extensions

给出上述错误的行是:

Import-Bindings -Path "BTS:\Applications\$AppToDeploy" -Source "$bindingsFileName"

就 CI 管道而言,这是一个新的应用程序。我尝试在我的本地和另一台开发 BizTalk 机器上运行相同的脚本,它可以顺利导入。

还尝试使用 BizTalk 管理控制台手动导入绑定 xml 文件。它也挂在 CI 盒上,但在开发机器上工作正常。

当它挂起时,如果您查看 SQL(托管在同一台机器上),就会发现有一个阻塞的进程。导致阻塞的进程没有进行任何更新,所以我假设它是某种 DTC 锁。BizTalk 中没有加载其他活动的 SQL 用户或应用程序。CPU 处于空闲状态,内存为 20%,磁盘活动已完全停止。

看起来像是这个新应用程序的 CI 代理机器特有的东西,只是不知道下一步该往哪里看。BizTalk 是否有任何日志或跟踪我可以启用以查看绑定导入在何处以及为何卡住?

PS 其他现有应用程序的绑定导入工作正常。如果我将绑定文件中唯一编排上的程序集版本更改为无效版本,则导入运行正常,但显然应用程序无法正常工作,因为该程序集不存在。

4

1 回答 1

2

最后!感谢 Dijkgraaf 的一些发人深省的想法,让它发挥作用。

短版:在 CI 框上启动 SQL 代理。

原来我们在绑定文件中的编排上有以下跟踪选项:

TrackingOption="ServiceStartEnd MessageSendReceive InboundMessageBody OutboundMessageBody OrchestrationEvents TrackPropertiesForIncomingMessages TrackPropertiesForOutgoingMessages"

如果此列表被简化为:

 TrackingOption="ServiceStartEnd MessageSendReceive OrchestrationEvents"

...进口将起作用。这让我认为这是一个跟踪基础设施问题,促使我检查执行维护的 SQL 代理作业。因为它是 CI 代理,没有任何东西真正使用 BizTalk 功能,所以没有人会关心检查 BizTalk 的运行状况。

在启动代理并让工作完成它们的工作后,原始绑定文件的导入就像做梦一样工作。

希望这可以帮助某人。

于 2018-06-26T23:58:25.690 回答