Windows 2012 R2 x64執行ASP經驗分享

Windows 2003於今年7月技術支援終止(12年,夠本了 XD),公司一批千年老妖等級ASP被勒令搬遷到Windows 2012R2 x64主機,過程還算順利,幫忙處理掉幾枚小茶包,記錄如下:

應用程式集區設定

經實測,「.NET CLR Version」設v2.0、v4.0或是No Managed Code,「Managed Pipeline Mode」設Integrated或Classic都不影響ASP執行,但ASP少不了要使用ActiveX物件,而ActiveX是32位元時代的產物,故記得要開啟「Enable 32-Bit Applications」設定,否則很快就會觸礁。

顯示ASP詳細錯誤訊息

ASP出錯時,預設將不會顯示詳細訊息,只會出現以下含糊說明:

這類似ASP.NET的customErrors功能,用意在隱藏詳細訊息,避免敏感資訊對駭客說歡迎光臨。不過,如果想看訊息射茶包,ASP沒有web.config,設定要到哪裡調?

使用IIS管理員檢視ASP應用程式設計,左上角的ASP圖示靜靜躺在那裡多年,終於第一次打開它…

打開Compilation/Debugging Properties,前面瀏覽器看到的那段訊息由「Script Error Message」決定,底下有個「Send Errors To Browser」,預設為False,如要偵錯可暫時打開。(正常營運建議保持False較安全)

開啟後,瀏覽器就能看到詳細錯誤訊息了。(在這個案例中,程式讀取的Registry位置就跑出來了,證明確有風險,顯示錯誤功能務必謹慎使用)

Registry機碼位置

某段讀取Registry的VBScript冒出如上找不到機碼錯誤,同事則確定在HKLM/SOFTWARE已加入所需設定。

<html>
<head><title>Registry Test</title></head>
<body>
<%
Dim Str
Function GetRegistry()
 Dim myObj
 Set myObj = CreateObject("WScript.Shell")
 GetRegistry = myObj.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\DARK\Blah")
 Set myObj = Nothing
End Function
Str = GetRegistry()
%>
Registry=<%= Str %>
</body>
</html>

召來茶包一哥Process Monitor,茶包當場現形:

ASP為32位元程式,原本Windows 2003 x86時代放在HKLM\SOFTWARE的Registry,必須改到HKLM\SOFTWARE\Wow6432Node\下。這是老問題,一時沒意會到,多虧老戰友幫忙破案,謝謝你,9527 Process Monitor。

歡迎推文分享:
Published 31 July 2015 10:55 PM 由 Jeffrey
Filed under:
Views: 8,676



意見

# Ike said on 11 August, 2015 04:37 AM

請問,在遠端(非本機)的瀏覽,會出現「500 - 內部伺服器錯誤」,應該如何設定才能看到完整的錯誤訊息呢?

# Jeffrey said on 12 August, 2015 01:30 AM

to Ike,你指的是ASP.NET程式嗎?若是,應為customErrors設成RemoteOnly所致,參考:msdn.microsoft.com/.../h0hfz6fc(v=vs.80).aspx 。需留意設成Off有風險,上線前記得改掉。

若是ASP,可參考這篇:執行 ASP 應用程式時,發生 HTTP 500 錯誤,該如何獲得更多的錯誤訊息

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<July 2015>
SunMonTueWedThuFriSat
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication