我不得不將一個經典的ASP應用程序從Windows Server 2008移動到Windows Server 2012 R2,並且該應用程序使用一個名爲com的對象(aspmail 4.0)從一個名爲ServerObjects的公司(不再是業務)(至少沒有辦法與他們聯繫)。Win 2012R2服務器 - ActiveX組件無法創建對象aspmail 4.0(SMTPsvg.Mailer)IIS8.5
無論如何,我已經註冊了DLL(C:\Windows\SysWOW64\regsvr32.exe d:\components\aspmail4\smtpsvg.dll
),這工作正如我檢查註冊表(它是100%安裝沒有問題或錯誤)。
我已驗證該DLL是否正確,並且註冊表指向正確的路徑(並且只有一條路徑)。
我已經將所有我能想到的權限(甚至用「Everyone」帳戶測試過)給予DLL文件(和IUSR帳戶)。
在應用程序池中禁用32位時,出現「ActiveX component can't create object.
」錯誤。
隨着應用程序池啓用32位,它只是崩潰的頁面(生成一個致命的除外)在事件日誌中有錯誤如下:
Faulting application name: w3wp.exe, version: 8.5.9600.16384, time stamp: 0x52157ba0 Faulting module name: smtpsvg.dll, version: 4.1.0.0, time stamp: 0x2a425e19 Exception code: 0xc0000005 Fault offset: 0x0004e001 Faulting process id: 0x3f0 Faulting application start time: 0x01cfe5f2dc426b4d Faulting application path: C:\Windows\SysWOW64\inetsrv\w3wp.exe Faulting module path: d:\components\aspmail4\smtpsvg.dll Report Id: 3dd63a38-51e6-11e4-80da-0cc47a302001 Faulting package full name: Faulting package-relative application ID:
是有我丟失了一些無證設置?我已經去了幾十個論壇,並按照所有的信件,但沒有任何作品(8小時,頭髮幾乎完全被拉出)。
的DLL可能是很老,現在你想在64位操作系統上運行它。大多數情況下,使用32位子系統註冊32位DLL足以使這些類型的DLL工作。在這種情況下,儘管它引發了一種「ACCESS VIOLATION」異常,這在基本意義上意味着DLL試圖訪問內存地址,但它不應該發生(當架構和操作系統從32位變爲64位和從版本到版本)。它可能是DLL需要的一個或多個依賴項不存在或已經更改,或者它可能與權限有關。 – Lankymart 2014-10-12 15:07:03
這就是我所擔心的。我想我會在DotNet中編寫一個組件,並將它作爲com對象公開。我已經有用於發送郵件的.Net代碼 - 只需將其轉換即可。 – MC9000 2014-10-12 17:08:45
你可以使用像[Dependency Walker](http://www.dependencywalker.com/)(很棒的小工具)的東西來看看DLL使用什麼樣的依賴關係,以及在什麼地方發現問題。說實話,如果你只是想用傳統的ASP發送電子郵件,只需使用CDONTS庫,它將出現在大多數Windows安裝中。 SO網站上有很多[tag:cdonts]和[tag:cdo]示例。 – Lankymart 2014-10-13 08:25:14