2011-05-23 19 views
2

Folks, 我意識到這可能看起來像通常的「你沒有重新啓動你的主機實例」的問題..但除此之外還有更多。我有一個BizTalk應用程序,它由幾個Schema程序集,一個管道程序集,一些地圖等組成。 我使用Visual Studio 2010將它部署到BTS2010。我的程序集全部出現在GAC中 - 我的模式,我的管道等。模式與管道一樣出現在BT應用程序中。我所有的地圖都出現在BT應用程序中。BizTalk沒有看到我的任何GAC'd程序集

當我通過使用自定義管道發送消息時,出現抱怨強名稱和GAC的「無法獲取管道」消息。當我不使用管道時,我只是嘗試用消息直接進入消息框,它抱怨說它無法加載我的模式的文檔規範,並再次抱怨GAC。

我已驗證幾百次,程序集實際上在GAC中,並且我已重新啓動(包括完全停止)主機實例幾十次。

是否有任何其他奇怪的事情,會使BizTalk無法加載我的東西從GAC,即使它看起來好像它在那裏,我已經重新啓動主機實例?

+2

您可以嘗試執行「Fusion Log Viewer」運行。啓動「FusLogvw.exe」並設置該設置以記錄所有綁定失敗。然後,運行程序並刷新日誌查看器。它會讓你瞭解誰加載什麼以及他們從哪裏加載(或加載失敗)。 希望這有助於, – 2011-05-25 17:14:56

回答

5

這裏有一些事情要檢查:

  1. 確保你沒有部署到BizTalk或到GAC同一程序集的多個副本/版本。
  2. 驗證您的程序集是否實際位於相應的BizTalk應用程序中,並且/或者是否在其他BizTalk應用程序中可能存在的其他父程序集(即創建依賴項)在BizTalk應用程序的屬性中設置爲「引用」。
  3. 我發現查看程序集是否位於GAC中的最可靠的方法是使用命令gacutil.exe /l(例如,來自Visual Studio(或Windows SDK)命令提示符)的gacutil.exe。要將結果輸出到文件,只需執行gacutil.exe /l > c:\gac.txt。然後,您可以搜索輸出以查找組件。也許您可以使用gacutil /if assemblyname.dll手動將GAC裝配到每個裝配。 f將強制現有的程序集被覆蓋。
  4. 在BizTalk應用程序中的每個BizTalk項目的項目屬性中,查看部署屬性並確保RedeployInstall to Global Assembly Cache均設置爲true。再次檢查是否設置了正確的Application NameServer
  5. 查看您計算機的事件日誌,看看是否可能有任何其他錯誤出現在您問題中引用的錯誤之前。
  6. 完全從BizTalk擦除應用程序。仔細檢查是否使用gacutil.exe從GAC中刪除了所有內容(如上所述)。進入BizTalk管理控制檯>>應用程序>>所有工件>>資源,並確保您沒有任何東西留在那裏,即使在刪除您的應用程序之後,也要仔細檢查是否從BizTalk管理數據庫中刪除了所有內容。完全。畢竟,再次部署一切。
相關問題