【发布时间】:2010-06-15 21:33:08
【问题描述】:
我想知道是否有其他人在升级服务器后遇到过失败的 DLL。
在使用经典 ASP 十年后,我的公司正在升级我们的代码和服务器。我们已经设置了运行 Windows 2008 和 IIS 7 的新服务器。我们的经典 ASP 代码和新的 asp.net mvc 代码运行良好。
当我们开始将旧网站迁移到新服务器时,我们的问题就开始出现了。当尝试在实际服务器机器的浏览器上加载页面时,我们最初收到 500 错误。如果我们刷新页面,那么一些页面会加载,但随后会显示错误:
服务器对象错误“ASP 0177:800401f3”
Server.CreateObject 失败
/folder/scriptname.asp,第 24 行
800401f3
顺便说一句:在远程机器上我们只会得到 500 个错误。
第 24 行是脚本中的第一个可执行代码:
'23 lines of comments
set A0SQL_DATA = server.createobject("olddllname.Data")
'the rest of the script
该特定行试图使用一个十年前的 DLL 来创建一个服务器对象。我不认为服务器配置有问题,因为我能够毫无问题地创建“adodb.recordset”服务器对象。
在 64 位系统上运行正确注册的旧 DLL 时是否存在问题?
有没有办法让旧的 DLL 在 64 位系统上工作?
编辑
我已确认该站点的应用程序池在 32 位兼容模式下运行,但无论何时调用 set A0SQL_DATA = server.createobject("olddllname.Data"),该站点仍会发送相同的错误。
【问题讨论】:
-
当你说升级时——是从 2k3 64 位升级到 2k8 R2(64 位)还是... dll 是 64 位?
-
如果您完全更改了操作系统,如 Greg 所询问的,那么另一个罪魁祸首可能是权限。 Windows 逐渐收紧了各个版本的权限,您的 DLL 可能正在尝试做一些它在运行它的帐户的上下文中没有权限做的事情。它可能在旧版本的 Windows 上运行良好,默认情况下权限较细且限制较少。
-
@Greg - 我不确定你的问题到底是什么意思。我知道我们之前使用的是 32 位操作系统,现在我们使用的是 windows server 2008。
-
@quakkels,您的 olddllname.Data 是否依赖于其他任何东西?看起来您的 progid 没有在这台 64 位机器上注册。您是否需要注册 (regsvr32) DLL 或其依赖项?尝试运行一个简单的独立应用程序来调用您的“CreateObject”。祝你好运
-
@Syd - 我确实创建了一个简单的经典 asp 应用程序,它使用 CreateObject 创建一个 adodb.recordset 对象。那是成功的
标签: asp-classic 64-bit