2015-09-29 90 views
0

我有一個令人沮喪的簡單問題。我已將經典的ASP網站從Windows Server 2003 IIS站點遷移到運行IIS 8.5的全新2012 R2服務器。在IIS 8.5上運行經典ASP的Include_file_not_found錯誤

當我導航到主頁(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失敗。我得到了以下錯誤消息:

enter image description here

事實證明,這是你,如果你嘗試註冊不存在的文件相同的錯誤。例如,我試圖註冊「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文件夾中只有一個64位的文件夾中有一個32位的DLL。一旦我將它移動到SysWOW64文件夾(這是一個32位文件夾,去圖),我能夠註冊它。我也從system32註銷MSVBVM60.DLL,發現它已經在SysWOW64中可用。

所以,這個DLL問題解決了!但由於包含文件不同,我又得到了同樣的錯誤。待續...

更新4:最終包含文件錯誤確實是缺少的包含文件。

+0

'> C:\ WINDOWS \ SYSTEM32> regsvr32.exe的MSVBVM60.DLL' 你應該使用C:\ WINDOWS \ SysWow64資料> regsvr32.exe的對64位操作系統 – Zam

+0

相同關於你'Domain.dll寄存器32位的DLL '。把它放入SysWow64文件夾並重新註冊 – Zam

+0

謝謝@Zam,這就是我昨天發現的。如果只有我們已經連接更快! – Nate

回答

0

回答我自己的問題......在我的情況下,問題是包含文件有問題拋出錯誤。我猜想ASP引擎無法呈現ASP包含文件的事實導致父頁面拋出「未找到」錯誤。通過安裝和註冊缺少的DLL,我能夠解決我的問題。詳細瞭解問題中的更新。