ASP错误0223-找不到类型库,间歇性,IIS重新启动后已解决

ASP错误0223-找不到类型库,间歇性,IIS重新启动后已解决,iis,asp-classic,iis-6,ado,iis-8.5,Iis,Asp Classic,Iis 6,Ado,Iis 8.5,我目前正在将ASP平台从Windows 2003 R2 IIS 6 web服务器迁移到Windows 2012 R2 IIS 8.5 web服务器。我已经将多个站点迁移到两个独立的2012 web服务器上,所有这些看起来都很棒,客户和开发人员都很高兴。。。但是,在一台新服务器上托管几天后,出现了以下错误 Active Server Pages error 'ASP 0223' TypeLib Not Found /jobboard/conf/constants.vbs.inc, line 1

我目前正在将ASP平台从Windows 2003 R2 IIS 6 web服务器迁移到Windows 2012 R2 IIS 8.5 web服务器。我已经将多个站点迁移到两个独立的2012 web服务器上,所有这些看起来都很棒,客户和开发人员都很高兴。。。但是,在一台新服务器上托管几天后,出现了以下错误

Active Server Pages error 'ASP 0223'

TypeLib Not Found

/jobboard/conf/constants.vbs.inc, line 1

METADATA tag contains a Type Library specification that does not match any Registry entry.
元数据标签如下所示:

<!--METADATA TYPE="typelib" NAME="Microsoft ActiveX Data Objects 2.8 Library" UUID="{2A75196C-D9EB-4129-B803-931327F72D5C}" VERSION="2.8"-->

在此服务器上重新启动IIS解决了该问题(尽管是暂时的)

随后,生产中的另一台2012 web服务器在几天后出现了相同的错误,再次重启IIS并暂时正常工作

我已经检查了注册表,并且相关的标记具有正确的UUID和正确的权限

它不会影响服务器上的所有站点,只影响特定应用程序池中的所有站点


应用程序池使用域用户标识,站点被拆分为多个共享池。

我记得ADOVBS.inc有一个包含所有ADO常量的包含文件,并将其作为标准ASP包含在我的全局包含文件中,该文件包含在站点的每个页面上

这是在我使用包含文件的元方法之前

因此,最后一种方法可能是恢复到加载ADO常量的方法

似乎达到了某种阈值,CPU/Memory?,这会阻止IIS从注册表缓存/加载文件。这将导致错误和池的循环。因为没有重定向到500.100.asp错误处理程序页面,该页面对用户隐藏错误详细信息。这表明错误在IIS中,并且与服务器相关


谢谢

我现在已经确定了导致上述问题的原因

我们在IIS上的站点在许多以域用户身份运行的共享应用程序池中运行。我们还有一个Windows调度程序作业,它在夜间运行许多脚本,这些脚本也作为同一个域用户运行

似乎在某些情况下,此计划程序作业运行时会干扰IIS工作进程。当它完成并结束其用户会话时,会将注册表文件卸载到内存中,w3wp.exe进程也可以使用该文件

此错误显示在事件日志中

Windows检测到其他用户仍在使用您的注册表文件 应用程序或服务。现在将卸载该文件。这个 保存注册表文件的应用程序或服务可能无法运行 之后适当地。不需要用户操作

以及对当前运行的w3wp.exe进程的引用

当我以域用户身份登录终端并在一段时间后再次注销时,它被复制。事件日志显示了错误,随后不久所有站点都遭到轰炸


以其他用户身份运行计划作业已为我们解决了此问题。

应用程序池是否以32位模式运行?我认为IIS找不到注册表项的唯一原因是它在错误的注册表配置单元中查找(32位对64位)在64位体系结构服务器上,32位类存储在
HKEY\U LOCAL\U MACHINE\Software\Wow6432Node\Classes
中,而64位类存储在
HKEY\U LOCAL\U MACHINE\Software\Classes
中。事实上它是间歇性的,但并不指向这一点。您好,谢谢您的时间!应用程序池以64位模式运行。ASP应用程序还来自64位环境,其中包含64位应用程序池。相关。谢谢我们有同样的问题,但原因不同。我们有一个windows服务,它使用与应用程序池相同的用户。为了重新创建,我们终止了服务进程(停止服务是不够的)。