1. 程式人生 > >HTTP 500 – 內部伺服器錯誤

HTTP 500 – 內部伺服器錯誤

今天把2k下的sam刪了(密碼忘記了!:system32/config),結果網頁不能解析,所有asp頁面出現500錯誤(+com元件許可權丟失),重灌IIS也不能解決問題,折騰了一天,不過終於還是解決了,相信下次碰到同樣的事,就不會成為問題了。

原文:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;311766

本任務的內容
摘要
本文說明如何解決與“HTTP 500 - Internal server error”錯誤有關的問題。這些錯誤產生的原因很多,並且可影響許多不同的系統配置。解決過程按問題出現的情況分類。Administrators 組的成員必須執行本文中介紹的所有步驟。

1、嘗試載入 Localstart.asp 檔案時

2、瀏覽 ASP 頁面時
3、IIS 5.0 返回 Server.GetLastError 錯誤資訊時
4、給 Alpha 或 UNIX 上的檔案分配類別時
5、將 500-100.asp 檔案用於非預設 Web 站點上的錯誤處理時
6、在索引伺服器中執行查詢時
7、從 ASP 頁面中訪問提供程式時
8、在 IIS 5.0 上設定 COM+ 應用程式標識時
9、在 IIS 4.0 上設定 MTS 應用程式標識時
10、IIS 4.0 在自己的記憶體空間中執行時

嘗試載入 Localstart.asp 檔案時

當 Web 站點的一個預設文件 Iisstart.asp 嘗試載入 Localstart.asp 檔案時,如果嘗試訪問此頁面的使用者不具有執行 Localstart.asp 檔案中包含的指令碼的正確許可權,您會收到 HTTP 500 錯誤資訊。如果清除顯示友好 HTTP 錯誤資訊複選框,將看到與下面的 HTTP 500 錯誤資訊類似的資訊:

Error Type:
Microsoft VBScript runtime (0x800A0046)
Permission denied:'GetObject'
/localstart.asp, line 19
出現此問題的原因是,Localstart.asp 檔案中包含了使用 IIS Admin 物件訪問元資料庫的 Active Directory 服務介面 (ADSI) 和 Visual Basic Scripting Edition (VBScript) 程式碼。出於安全考慮,只有本地 Administrators 組的成員才能訪問元資料庫。這種現象是設計所導致的。

要解決此問題,請按照以下步驟操作:
單擊開始,指向程式,指向管理工具,然後單擊 Internet 資訊服務。
在控制檯樹中,單擊預設 Web 站點。在顯示窗格中,右鍵單擊 Localstart.asp,然後單擊屬性。
在檔案安全選項卡的匿名訪問和身份驗證控制中,單擊編輯。
在身份驗證方法屬性頁中,單擊以清除匿名訪問。
返回頁首


瀏覽 ASP 頁面時
當您瀏覽 Active Server Pages (ASP) Web 頁面時,會收到“HTTP 500.100 - Internal Server Error - ASP error”錯誤資訊。如果清除顯示友好 HTTP 錯誤資訊複選框,將在“技術資訊(用於支援人員)”部分看到類似下面這樣的資訊:

Error Type:
Microsoft VBScript runtime (0x800A01F4)
Variable is undefined:'x'
/OptionExplicitError.asp, line 9

Page:
GET /OptionExplicitError.asp
要解決此問題,請刪除 Option Explicit 語句,或者使用 DIM 關鍵字宣告變數。

要重現此問題,請在允許執行指令碼的虛擬目錄中執行包含以下程式碼的 ASP 檔案: About to use an undeclared variable
要修改此示例,請使用 DIM 語句宣告 X 變數,如下所示: About to use an undeclared variable

返回頁首


IIS 5.0 返回 Server.GetLastError 錯誤資訊時
當某個 Web 應用程式或頁面不可用時,IIS 會返回一個錯誤資訊。其結果是自定義的 ASP 頁面處理對伺服器端指令碼錯誤的響應。此頁面返回狀態“500 Internal Server Error”,這導致客戶端遠端指令碼小程式不向遠端指令碼物件返回任何資料。

要解決此問題,請建立一個返回狀態“200 OK”的自定義錯誤頁面,然後在遠端指令碼伺服器頁面或應用程式的“自定義錯誤”部分引用此頁面。為此,請按以下步驟操作:

注意:可以為各個頁面、整個應用程式或者整個 Web 站點或 Web 伺服器設定此自定義錯誤頁面。
建立 %SystemRoot%/WinNT/Help/IISHelp/Common/500-100.asp 的副本,並將它儲存在與原始檔案相同的資料夾中。將新檔案命名為 500-100-OK.asp。
單擊開始,指向程式,指向附件,然後單擊記事本。
在記事本中,單擊檔案選單上的開啟。在查詢範圍下拉框中,瀏覽到 500-100-OK.asp 檔案,然後單擊開啟。
將下面的程式碼Response.Status = "500 Internal Server Error"

替換為: Response.Status = "200 OK"

注意:如果以前沒修改過錯誤資訊,則程式碼的原始行為第 12 行。


在檔案選單中,單擊儲存。
在 Internet 服務管理器的控制檯樹中,單擊您的 Web 伺服器。如果您的遠端指令碼 ASP 頁面位於其中一個 Web 站點下的 Web 應用程式中,則展開您的 Web 應用程式。
在“詳細資訊”窗格中,右鍵單擊您的遠端指令碼伺服器 ASP 頁面,然後單擊屬性。
單擊自定義錯誤。在列表中,查詢 500;100 的項。預設情況下,該項被設定為一個 URL 並引用 Help/Common/500-100.asp。單擊編輯屬性。
修改路徑,使其指向 /IISHelp/Common/500-100-OK.asp,單擊確定,然後再次單擊確定。
返回頁首

給 Alpha 或 UNIX 上的檔案分配類別時
給 Alpha 或 UNIX 上的檔案分配類別時,會收到一個 HTTP 500 錯誤資訊。

要解決此問題,請安裝 Microsoft Office 2000 Service Release 1 (SR-1) 或 Service Release 1a (SR-1a)。要下載 Office 2000 SR-1,請參見下面的 Microsoft Web 站點:
http://office.microsoft.com/downloads/2000/O2kSR1DDL.aspx

返回頁首

將 500-100.asp 檔案用於非預設 Web 站點上的錯誤處理時
將 500-100.asp 檔案用於非預設 Web 站點上的錯誤處理時,會收到一個 HTTP 500 錯誤資訊。

要解決此問題,請按以下步驟操作:
在“Internet 資訊服務”管理單元的控制檯樹中,右鍵單擊相應的 Web 站點,單擊新建,然後單擊虛擬目錄。
在“虛擬目錄建立嚮導”中,單擊下一步。在別名文字框中,鍵入 IISHelp,然後單擊下一步。
當提示您輸入內容資料夾的路徑時,單擊瀏覽,選擇 WINNT/Help/IisHelp 資料夾,然後單擊下一步。
在訪問許可權頁面中,接受所有預設值,單擊下一步,然後單擊完成。
再次右鍵單擊 Web 站點,然後單擊屬性。
在自定義錯誤選項卡中,選擇 "500;100" 錯誤行,然後單擊編輯屬性。
在資訊型別列表框的 URL 文字框中,鍵入 /iisHelp/common/500-100.asp。
單擊確定,然後再次單擊確定。
返回頁首

在索引伺服器中執行查詢時
單擊Go在索引伺服器中執行查詢時,可能會收到一個 HTTP 500 錯誤資訊。
出現此錯誤的原因是,沒有為包含查詢頁面的資料夾定義預設的應用程式起始點。

要解決此問題,請按以下步驟操作:
在“Internet 資訊服務”管理單元的控制檯樹中,右鍵單擊包含查詢頁面的站點的根目錄,然後單擊屬性。
在主目錄選項卡中,單擊建立。
單擊確定,然後重試查詢。
返回頁首

從 ASP 頁面中訪問提供程式時
如果清除了顯示友好 HTTP 錯誤資訊複選框,當您嘗試從 ASP 頁面中訪問提供程式時,可能會收到以下錯誤資訊:

ADODB.Connection (0x800A0E7A) Provider cannot be found.It may not be properly installed./Nwind.asp, line 10
出現此錯誤的原因是,Microsoft 資料訪問元件 (MDAC) 所需的動態連結庫 (DLL) 尚未註冊。
單擊開始,單擊執行,然後鍵入 cmd。
在命令提示符下,鍵入 cd %systemroot%:/Program Files/Common Files/System/Ole。
在命令提示符下,鍵入 regsvr32 sqloledb.dll。
收到 DLL 成功註冊的確認後,單擊確定。注意:此解決方案使用了 Microsoft SQL Server OLE Provider DLL (Sqloledb.dll) 作為示例。由於未註冊的 DLL 可能會因使用的 OLE DB 提供程式而異,所以您必須根據具體情況修改第 2 步。
返回頁首

在 IIS 5.0 上設定 COM+ 應用程式標識時
當您嘗試在 IIS 5.0 上設定 COM+ 應用程式標識時,會收到一個 HTTP 500 錯誤資訊。

當 COM+ 應用程式或 Microsoft Transaction Server (MTS) 程式包的標識被配置為互動式使用者 - 當前已登入的使用者時,會出現此問題。由於當前沒有使用者登入到 IIS 控制檯,所以應用程式無法執行。

要解決此問題,請將 COM+ 應用程式或 MTS 程式包的標識設定為此使用者,然後指定一個使用者帳戶。為此,請按以下步驟操作:
單擊開始,指向程式,指向管理工具,然後單擊元件服務。
在控制檯樹中,依次展開元件服務、計算機、我的電腦和 COM+ 應用程式。查詢希望更改其標識的應用程式。
右鍵單擊相應的 COM+ 應用程式,然後單擊屬性。
在標識選項卡中,單擊此使用者,鍵入一個有效的計算機帳戶,然後單擊確定。
返回頁首

在 IIS 4.0 上設定 MTS 應用程式標識時
當您在 IIS 4.0 上設定 MTS 程式標識時,會收到一個 HTTP 500 錯誤資訊。

要解決此問題,請按以下步驟操作:
在“Internet 資訊服務”管理單元中,依次展開計算機、我的電腦和 Microsoft Transaction Server。查詢希望更改其標識的程式包。應用程式列在“已安裝的應用程式包”資料夾中。
右鍵單擊該程式包,然後單擊屬性。
在標識選項卡中,單擊此使用者,鍵入一個有效的帳戶,然後單擊應用。
返回頁首

IIS 4.0 在自己的記憶體空間中執行時
如果滿足以下任一條件,就會收到 HTTP 500 錯誤資訊:
IIS 4.0 的預設 Web 站點作為一個獨立的程序在自己的記憶體空間中執行。
Microsoft Internet Explorer 被配置為在 Proxy Server 2.0 上使用 Web 代理伺服器。
BackOffice Small Business Server 4.5 版上的 Internet Explorer 被配置為使用代理伺服器,並且啟用了代理伺服器資料包篩選。
要解決此問題,請按以下步驟操作:
單擊開始,指向程式,單擊 Microsoft Proxy Server,然後單擊 Microsoft 管理控制檯。
在控制檯樹中,展開 Internet Information Server 資料夾,然後展開伺服器物件。
右鍵單擊預設 Web 站點,然後單擊屬性。
在主目錄選項卡中,找到應用程式設定區域,然後單擊以清除在單獨的記憶體空間執行(獨立程序)。
單擊應用,然後單擊確定。
右鍵單擊預設 Web 站點,然後單擊停止。
右鍵單擊預設 Web 站點,然後單擊啟動。
返回頁首

我的處理過程:首先把IIS中目錄安全性的匿名登入使用者設定為當前已登入使用者,
IIS→伺服器→屬性→目錄安全性→匿名訪問和安全控制→編輯→匿名訪問→編輯→選擇使用者。

然後把COM+元件的標識設定成當前已登入使用者,
元件服務→元件服務→計算機→我的電腦→COM+應用程式→將各應用程式屬性中的標識改為 互動式使用者-目前已登入使用者

重啟IIS後已經能看到ASP頁面了。