2011-12-20 110 views
0

我最近遇到了一個奇怪的問題。我有一些VB6 .dll,我必須在我的ASP.NET Web服務項目中使用。當我在控制檯應用程序中測試.dll時 - 一切正常 - 我創建一個對象,並可以使用所有方法。但是當我開始在我的Web服務中使用它時,我遇到了一個奇怪的問題。當我創建一個dll類的實例時,它會在調試器中創建(長時間停頓後),但是所有屬性而不是空值(正如我在控制檯應用程序中測試它時發生的那樣)被設置爲「功能評估被禁用,因爲之前的功能評估超時,必須繼續執行以重新啓用功能評估「。奇怪的事情,我從來沒有見過:)而在我的客戶端應用程序(實際上調用該服務)的同時,我得到一個連接重置。ASP.NET Web服務項目中的VB6 .dll

有什麼建議嗎?

回答

1

如果此DLL是爲桌面環境創建的,那麼它可能無法在服務器環境中工作。它可能依賴於使用Windows消息循環進行同步,並且可能根本不是線程安全的(並且它必須是線程安全的才能在ASMX之類的多線程服務器環境中使用它)。

+0

是的,就是這個問題。你知道是否有某種方法可以在.net級別修復它,或者它必須在vb6項目的屬性中進行更改? – Boltosaurus 2011-12-21 06:07:32

+1

這不只是屬性。該組件必須設計用於多線程,並且必須在多線程服務器環境中進行徹底測試。一個示例是Microsoft Office的Office自動化組件。它們被設計用於從Office加載項和在桌面上運行_的其他代碼。當從Web服務或ASP.NET網站使用它們時,它們要麼不工作,要麼以奇怪的方式失敗。 – 2011-12-21 17:07:44