在 IIS 8.5 上 Include_file_not_found 错误 运行 经典 ASP

Include_file_not_found error running classic ASP on IIS 8.5

我有一个非常简单的问题。我已将经典 ASP 站点从 Windows Server 2003 IIS 站点迁移到全新的 2012 R2 Server 运行 IIS 8.5。

当我导航到主页 (http://mydns/default.asp) 时,出现 500 错误。 IIS 日志显示此错误:

GET /default.asp |4|ASP_0126|Include_file_not_found

查看 default.asp 页面,我在文件顶部看到以下代码:

<%@ Language=VBScript %>
<!-- #include file="Include/common.asp" -->
<%
dim EMAIL_ID

if Request.QueryString = "" then
...

因此,我的假设是第二行引发了错误。在网站目录下,确实存在Include目录,里面有一个common.asp文件

# the default.asp page that I'm loading...
E:\websites\mywebsite>dir | findstr default
09/29/2015  10:30 AM             3,237 default.asp

# the common.asp page within the Include folder...
E:\websites\mywebsite>dir Include | findstr common
06/30/2015  10:27 AM               546 common.asp

知道为什么当我在该目录中看到文件时会收到有关找不到文件的错误吗?


更新 1: 通过在浏览器中导航到 common.asp 页面,我在 IIS 中收到以下错误:

GET /Include/common.asp |42|800a01ad|ActiveX_component_can't_create_object:_'Domain.clsAuth'

我发现 this article 帮助我确认缺少一个 DLL,因此我打算在新服务器上安装它。

更新 2: 我能够在旧服务器上找到所需的 Domain.dll。我使用 Dependency Walker 确定 Domain.dll 依赖于 MSVBVM60.DLL 所以我抓住了这两个并将它们移动到新服务器。我使用C:\WINDOWS\system32>regsvr32.exe MSVBVM60.DLL成功注册了MSVBVM60.DLL,但是注册Domain.dll失败了。我收到以下错误消息:

事实证明,这与您尝试注册不存在的文件时遇到的错误相同。例如,我尝试注册 "dummy.dll" 并得到同样的错误。就像系统没有看到该文件一样。它在命令行自动完成,但我无法注册。我也无法在 Dependency Walker 中打开它...应用程序说找不到文件。但我知道它在那里...

C:\WINDOWS\system32>dir | findstr Domain
04/27/2006  02:57 PM            24,576 Domain.dll

更新 3: 关于注册 DLL 的问题是 32 位与 64 位的问题。我在 system32 文件夹中有一个 32 位 DLL,它是一个仅 64 位的文件夹。一旦我将它移动到 SysWOW64 文件夹(这是一个 32 位文件夹,请看图),我就能够注册它。我也从system32注销了MSVBVM60.DLL,发现它已经在SysWOW64中可用了。

那么,这个DLL问题就解决了!但是由于包含文件不同,我再次遇到同样的错误。待续...

更新4:最后的包含文件错误确实是缺少包含文件。

回答我自己的问题...在我的例子中,问题是有问题的包含文件抛出错误。我猜 ASP 引擎无法呈现 ASP 包含文件导致父页面抛出 "not found" 错误。通过安装和注册丢失的 DLL,我能够解决我的问题。查看问题中的更新以了解详细信息。