我有一个令人沮丧的简单问题。我已经将一个经典的ASP站点从Windows Server 2003 IIS站点迁移到运行IIS 8.5的闪亮的新2012 R2服务器。
当我导航到主页(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:最终的包含文件错误确实是一个缺少的包含文件。
答案 0 :(得分:0)
回答我自己的问题......就我而言,问题在于有问题的包含文件是在抛出错误。我猜ASP引擎无法呈现ASP包含文件的事实导致父页面抛出“未找到”错误。通过安装和注册丢失的DLL,我能够解决我的问题。查看问题中的更新以获取详细信息。