Win 2012R2 Server-ActiveX组件无法创建对象aspmail 4.0(SMTPsvg.Mailer)IIS8.5 [英] Win 2012R2 Server - ActiveX component can't create object aspmail 4.0 (SMTPsvg.Mailer) IIS8.5

查看:96
本文介绍了Win 2012R2 Server-ActiveX组件无法创建对象aspmail 4.0(SMTPsvg.Mailer)IIS8.5的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不得不将经典的ASP应用程序从Windows Server 2008迁移到Windows Server 2012R2,并且该应用程序使用了来自名为ServerObjects的公司的名为(aspmail 4.0)的com对象-该公司不再营业(至少没有营业了)与他们联系的方式.

I've had to move a classic ASP application from windows server 2008 to Windows Server 2012R2 and the app uses a com object called (aspmail 4.0) from a company called ServerObjects - which is no longer in business (at least there's no way to contact them).

无论如何,我已经注册了DLL(C:\Windows\SysWOW64\regsvr32.exe d:\components\aspmail4\smtpsvg.dll),该DLL在我检查注册表时可以正常工作(100%安装没有问题也没有错误).

Anyway, I've registered the DLL (C:\Windows\SysWOW64\regsvr32.exe d:\components\aspmail4\smtpsvg.dll), that works as I checked the registry (it's 100% installed no issues nor errors).

我已经验证了DLL是正确的,并且注册表指向了正确的路径(并且只有1条路径).

I've verified the DLL is correct and the registry is pointing to the correct path (and that there is only 1 path).

我已授予DLL文件(和IUSR帐户)所有可以想到的权限(甚至使用每个人"帐户进行了测试).

I've given every permission I can think of (even tested it with the "Everyone" account) to the DLL file (and IUSR account).

在应用程序池中禁用32位时,出现"ActiveX component can't create object."错误.

With 32bit disabled in the app pool, I get the "ActiveX component can't create object." error.

在应用程序池中启用了32位功能后,它只会使页面崩溃(生成致命异常),并在事件日志中显示错误,如下所示:

With 32bit enabled in the app pool, it just crashes the page (generates a fatal exception) with an error in the event log as follows:


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个小时,头发几乎被完全拔掉了.)

Is there some undocumented setting I'm missing? I've gone to dozens of forums and followed everything to the letter, but nothing works (8 hrs now, hair is almost completely pulled out).

推荐答案

所以我实际上在将一些旧站点迁移到Windows Server 2012服务器时亲自遇到了此问题,这似乎是由于对cdonts.dll的依赖也称为 NTS的协作数据对象 (CDONTS),并在

So I've actually come across this issue myself while migrating some old sites to Windows Server 2012 server and it appeared to be because of a dependency on cdonts.dll which was also known as Collaboration Data Objects for NTS (CDONTS) and was superseded sometime ago by Collaboration Data objects for Windows 2000 (CDOSYS).

请参见从何处获取CDO库(所有版本)

不幸的是,我正在迁移的旧代码包括对

Unfortunately, the legacy code I was migrating including references to

Dim cdo: Set cdo = Server.CreateObject("CDONTS.NewMail")

这将导致错误

ActiveX组件无法创建对象

ActiveX component can't create object

代替编写代码,经过一些研究发现,将32位DLL cdonts.dll从旧服务器迁移到新服务器会更容易,看看是否可以在系统中注册它,这是步骤.

Instead of writing the code, after a little research found it would be easier to just migrate the 32-bit DLL cdonts.dll from the old server to the new one and see if I can register it with the system, here are the steps.

  1. 在旧服务器上的%SystemRoot%\System32中位于cdonts.dll.
  2. 将DLL复制到新服务器

  1. Located cdonts.dll in %SystemRoot%\System32 on the old server.
  2. Copied the DLL to the new server

这需要一些深思熟虑.如果服务器运行的是64位版本的操作系统,则需要将文件复制到

This would require some forethought. If the server was a running a 64-bit version of the OS the file would need to be copied into

%SystemRoot%\SysWow64

和其他32位子系统DLL,否则,如果它是32位操作系统,则需要将其复制到

with the other 32-bit subsystem DLLs, otherwise, if it was a 32-bit OS it would need to be copied into

%SystemRoot%\System32

值得注意的是,只要使用正确的regsvr32.exe,DLL仍可以驻留,但是为了使工作流程保持整洁.

It's worth noting that the DLL can reside anyway as long as the correct regsvr32.exe is used, but for the sake of keeping things tidy followed this workflow.

  • 使用正确的子系统版本的regsvr32.exe来注册DLL.在这种情况下,它是一台64位服务器,因此需要使用regsvr32在32位子系统文件夹中注册DLL.

  • Use the correct subsystem version of regsvr32.exe to register the DLL. In this case, it was a 64-bit server so needed to register the DLL using regsvr32 in the 32-bit subsystem folder.

    测试应用程序.发现错误已消失,并且使用旧版组件,脚本按预期工作.

    Test the application. Found that the error had gone and the script worked as expecting using the legacy component.

    C:\>cd %systemroot%\syswow64
    C:\Windows\SysWow64\>regsvr32 cdonts.dll
    

  • 对我有帮助的链接:如何使用CDONTS. Windows Server 2012 R2上的DLL

    这篇关于Win 2012R2 Server-ActiveX组件无法创建对象aspmail 4.0(SMTPsvg.Mailer)IIS8.5的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆