【问题标题】:Wrong Public Key Token in BizTalk message - how to change or fixBizTalk 消息中的错误公钥令牌 - 如何更改或修复
【发布时间】:2013-09-11 20:51:29
【问题描述】:

首先,对于 BizTalk(这里是 2006 年)来说还很陌生,只是被扔进了冷水里。

这是背景:更新了架构并使用错误的公钥令牌部署了它。用于发送发票的编排随后创建了如下错误消息。

内部异常:收到意外消息类型“NevsSchemas.lt_invoice,NevsSchemas,版本=1.0.0.0,Culture=neutral,PublicKeyToken=33796310301beca5”不匹配预期类型“NevsSchemas.lt_invoice,NevsSchemas,版本=1.0.0.0,Culture =中性,PublicKeyToken=ef01f6a8aeff3082

唯一的问题似乎是不同的令牌,因为它现在具有正确的令牌 (ef01...) 并且可以再次工作。

问题是,我有 114 份处于暂停模式的发票,并且似乎消息包含错误的令牌 (3379...),并且没有使用新的(更正的)架构进行更新,因为它试图使用相同的消息。

有没有一种简单的方法可以恢复所有 114 个实例并让它们通过?

想到的两个想法:

  1. 更改 Biztalk DB 中的消息并替换令牌值。但由于它全部被压缩,它可能比数字 2 更令人头疼。
  2. 将消息内容复制并粘贴到一个新的 XML 文件中,然后由接收端口接收并正确处理。我们进行了测试,这是一个可行的选择,但做了 114 次?

【问题讨论】:

  • 如果您恢复其中一个发票消息实例会发生什么?它会继续失败吗?
  • 是的,它继续产生完全相同的错误

标签: biztalk publickeytoken


【解决方案1】:

使用过滤器 (BTS.SchemaStrongName) 创建一个发送端口,该过滤器使用将其写入文件位置的错误公钥订阅架构。

【讨论】:

  • 如果我继续,它不会只是尝试以“接收消息”形状继续相同的编排,从而再次使用错误的键接收消息吗?
  • 是的,你是对的,如果 Orchestration 已经使用了消息,那么这将无济于事。
【解决方案2】:

看来您需要亲自动手编写一些代码才能从挂起的消息实例中提取消息体。

这可以通过 BizTalk Terminator Tool 或通过一些 WMI 代码来完成。 http://blogs.msdn.com/b/biztalknotes/archive/2013/05/22/saving-suspended-messages-using-wmi-powershell-and-the-microsoft-biztalk-operations-assembly-part-i.aspx 有一篇有用的帖子,其中显示了相关技巧。

提取消息并重新处理它们后,请确保通过 BizTalk 管理控制台终止暂停的实例。

【讨论】:

    猜你喜欢
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2018-06-27
    相关资源
    最近更新 更多