2012-01-19 70 views
1

我有一個VB.Net類,我通過手動線程從asp.net頁面調用。當代碼執行嘗試調用特定的外部DLL時,執行就停止。沒有例外被拋出。我在調用之前以及在錯誤處理程序中寫入日誌。只記錄通話前的日誌條目。.Net代碼執行剛剛停止,沒有拋出異常

這在我的開發機器上工作正常,但它在部署服務器上失敗。我今天早些時候使用了一個演示版本,可以正常工作。

本週早些時候,我有一個類似的事情發生在不同的第三方DLL。原來我的服務器上安裝了不同版本的組件。我在這種情況下尋找,但我的我的bin文件夾和我的開發機器上的dll的安裝文件夾anmd有相同的版本。

任何想法我怎麼去弄清楚這裏發生了什麼?

+0

大約7分鐘後,終於拋出異常:「線程正在中止」。這是否意味着DLL阻塞/鎖定/循環或其他類似的東西?這個異常是來自DLL還是來自CLR? –

+0

好的,發現問題了。它看起來像這是非常具體的DLL和我的情況。 DLL,websitesscreenshot.dll做屏幕大小的其他網站。它在後臺使用IE將頁面設爲圖像。我在服務器上捕獲的頁面混合了ssl/non ssl(安全/非安全)內容,IE彈出了一個不可見的對話框。這是懸掛DLL直到線程死亡。我沒有錯過任何異常,因爲dll掛起而沒有發送。更改IE安全設置以允許混合內容不能解決問題。將我所有的http改爲https。 –

回答

0

儘管您提到了「演示版本」,但您不提供有關外部DLL的任何詳細信息。這只是猜測:可能會有一些授權問題?該DLL檢查你是否在開發服務器上運行,並且在那裏工作正常,但是在生產服務器上(IIS我認爲它不)。延遲可能與試圖聯繫許可服務器的DLL有關。

實際上可能還有另一個原因:您擁有有效的許可證,但部署服務器無法聯繫Internet。

另外,請檢查您的部署服務器是否可以訪問crl.microsoft.com。一些插件試圖訪問它來吊銷一些證書。有關更多信息:

http://www.eggheadcafe.com/microsoft/Windows-MSI/29381925/code-signing-performance-problems-with-certificate-revocation-chec.aspx

0

嘗試把一些日誌記錄信息要調用的dll。像log4net這樣的框架對此可能很有用,然後找出代碼在dll中有多遠。

0

我之前使用過的一種方法是使用Fusion Log Viewer來記錄任何程序集綁定。

運行應用程序後,您可以檢查日誌以找出發生了什麼錯誤/失敗。

+0

這看起來像一個很好的工具,我將不得不把它添加到我的胸部。 –

+0

它非常方便......如果您遇到程序集問題,您將看到.NET在哪裏以及如何搜索它。 – CCBlackburn