簡體   English   中英

BizTalk 將 dll 保存在哪里?

[英]Where does BizTalk keep dlls?

我在使用 BizTalk 時遇到一些問題,說架構確實存在時不存在。

我可以在BizTalkMgmtDb中使用

select * from bt_documentspec where msgtype like '%myschema%'

我可以在 BizTalk Server 管理控制台 > <所有工件> > 架構 > 我的架構中看到它。

本段是可選的。 我只是把它包括在內,所以你知道我已經嘗試過你在谷歌這個問題時得到的答案。 我得到的確切錯誤消息類似於“這個匯編程序無法使用這種類型檢索文檔規范”,如果你用谷歌搜索告訴你架構沒有部署或者你正在使用的根元素存在於兩個單獨的命名空間中,那么你應該在 SendPorts XMLTransmit 1 2上提供一個 DocSpecName。

我還嘗試根據此問題的答案將包含問題架構的 dll 重新安裝到 GAC 中。 那也不起作用,但現在我還有更多問題。

如果我這樣做gacutil -l我的程序集都不會在那里列出。 在此處輸入圖像描述

所以我想知道這甚至有什么作用? 在此處輸入圖像描述

因為這些程序集未在gacutil -l. 同樣,當您查看這些程序集時
它顯示了源位置和目標位置。 在此處輸入圖像描述 為什么? 為什么不只是位置? 我什至無法在我的計算機上找到%BTAD_InstallDir% ,因此該架構 dll 可能存在的位置至少有 4 個。

  1. 源位置
  2. 目標位置 ( %BTAD_InstallDir% )
  3. “GAC”
  4. 它實際上在哪里,因為似乎沒有%BTAD_InstallDir%

因此,如果我想“更新 GAC”以確保此架構存在,我該怎么做? BizTalk 實際使用的是什么 dll? %BTAD_InstallDir% 中的那個還是 GAC 中的那個?

商務對話 2010。

它與 DLL 的位置無關,它與以下事實有關

  1. XML 有效負載命名空間和根節點不匹配任何架構
  2. 您有兩個或多個架構具有完全相同的命名空間和匹配的根節點。

如果您在 XML 上沒有任何命名空間,那么它將僅在根節點上嘗試匹配,但如果您有多個具有相同根節點的模式,它將失敗。

您需要做的是查看掛起的消息並查看它的上下文屬性並查看它的消息類型是什么,並將其與 BizTalk 中的架構進行比較。 應該有一個完全匹配的。

消息類型提升屬性

對比

架構

但要回答你的問題,

  1. 源位置通常只是 DLL 在 Dev 中最初導入時所在的路徑。
  2. %BTAD_InstallDir%是您在導入 MSI 時選擇的目錄,默認位置是C:\Program Files (x86)\Generated by BizTalk 然而,這只是它最初的位置
  3. 是的,最終它實際使用的將在 GAC 中,它位於C:\Windows\Microsoft.NET\assembly\GAC_MSIL

注意:如果之前已經部署了 DLL,並且您正在部署一個新的,那么請確保之后重新啟動主機實例,因為它將在 memory 中緩存 DLL 一段時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM