我目前正在将ASP平台从Windows 2003 R2 IIS 6网络服务器迁移到Windows 2012 R2 IIS 8.5网络服务器。我正处于将多个站点迁移到两个独立的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标记如下:
<!--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和正确的权限。
它不会影响服务器上的所有站点,只会影响特定应用程序池中的所有站点。
应用程序池使用域用户身份,站点被拆分为多个共享池。
答案 0 :(得分:2)
我现在确定了造成上述问题的原因......
我们在IIS上的网站运行在以域用户身份运行的多个共享应用程序池中。我们还有一个Windows调度程序作业,它在夜间运行许多脚本,这些脚本也作为同一个域用户运行。
似乎有时这个调度程序作业运行会干扰IIS工作进程。当它完成并结束其用户会话时,它将卸载内存中的注册表文件,w3wp.exe进程也可以使用该文件。
此错误显示在事件日志...
中Windows检测到您的注册表文件仍被其他人使用 应用程序或服务。该文件现在将被卸载。该 保存您的注册表文件的应用程序或服务可能无法运行 之后适当的。无需用户操作。
同时引用当前正在运行的w3wp.exe进程。
当我作为域用户终端服务并在一段时间后再次注销时,它被复制了。事件日志显示错误,不久之后所有网站都遭到轰炸。
以其他用户身份运行预定作业已为我们解决了此问题。
答案 1 :(得分:0)
我记得有一个ADOVBS.inc的包含文件,其中包含所有ADO常量,并将其作为标准ASP包含在我的全局包含文件中,该文件包含在网站的每个页面上。
这是在我使用META方式包含文件之前。
所以也许最后的办法是恢复ADO常量中的加载方法。
似乎某种阈值被点击,CPU /内存?,然后阻止IIS缓存/从注册表加载文件。然后,这会导致错误和池的循环。由于没有对500.100.asp错误处理程序页面进行重定向,该页面隐藏了用户的错误详细信息。它会建议错误在IIS中并与服务器相关。
由于