我試圖部署Server 2008和IIS 7錯誤429在IIS和64位Windows Server 2008
我在應用程序運行良好其他服務器上的32位ASP Web應用程序,但在此服務器上,每次我打開ASP頁調用的一個我的DLL的我得到錯誤429:在DLL ActiveX組件不能創建對象。
我已經嘗試了所有我在網上找到的有關此問題的修復,其中包括: 在應用程序池上啓用32位應用程序。 重新註冊DLL的(使用了RegSvr32)從C:\ WINDOWS \ Syswow64資料夾
當我運行Sysinternals的進程監視器,並比較結果,我發現的主要事情是,運行正常,當我加載在機器上該頁面在dllhost.exe程序和w3wp.exe進程之間存在混合的活動。
在失敗的服務器中,我看到對註冊表的調用沒有在成功的服務器中進行,包括一些我不知道它們是什麼的: HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ VBA \監視器 HKCR \ Wow6432Node \界面{6F255EB7-E73A-4579-B0EC-045FBC00992D} \ InterfaceHelperDisableTypeLib HKCR \ Wow6432Node \界面{6F255EB7-E73A-4579-B0EC-045FBC00992D} \ InterfaceHelperDisableAll HKCR \ Wow6432Node \界面{6F255EB7- E73A-4579-B0EC-045FBC00992D} \ InterfaceHelperUser
而所有這些電話都是使用dllhost.exe進程作出。直到出現錯誤頁面時,w3wp.exe進程纔會再次進入。
我應該指出,這是兩個全新的服務器。我們無法確定它們之間的配置差異。
另外值得一提的是,即使我應該支持這個程序,我要的源代碼的訪問,並且不能在任何形式的與斷點或類似的東西調試模式下執行源。
我強烈懷疑我們試圖在64位服務器上運行這個32位代碼的方式存在某種配置錯誤,但我對如何證明它或者導致如何修復它。
感謝, 比爾
UPDATE: 原來,這個問題是一個需要重新生成一個.tlb文件。一些做C#開發,並允許看源代碼的幾個人在我公司的發現很快那的DLL的運行一個應用程序提供了一種方法來做到這一點。他們掀起一個VB腳本調用它來生成文件,一切都恢復正常。
我對Windows開發知之甚少,無法知道.tlb是什麼或者爲什麼能工作,但故事的寓意是如果你有一個不能在64位上運行的32位web應用程序(可能是任何服務器?)Windows服務器因爲錯誤429,請仔細看看.tlb文件。只是不要問我你應該尋找什麼。
是的,我做到了。其實我雙只檢查了它發佈之前,以確保我沒有錯過任何非常簡單的事情。 – 2013-05-10 21:03:41
這也適用於我http://support.microsoft.com/kb/177394 – Darren 2013-05-11 23:08:41