現象:ASP 應用生成靜態 HTML 失敗,無報錯或權限錯誤,本地測試正常。
虛擬主機商為安全考慮,在 IIS 中禁用/註銷 Scripting.FileSystemObject (FSO) 組件。FSO 為 ASP 核心檔案操作組件,支援讀寫建立刪除檔案/目錄,生成靜態頁即依賴其 CreateTextFile、Write 方法。
scrrun.dll 存在:C:\Windows\System32\scrrun.dllI386\scrrun.dl_ 解壓複製至 System32regsvr32 scrrun.dlltest_fso.asp
<%
Set fso = Server.CreateObject("Scripting.FileSystemObject")
Set f = fso.CreateTextFile(Server.MapPath("test.txt"), True)
f.WriteLine("FSO OK")
f.Close
Response.Write("Success")
%>
regsvr32 /u scrrun.dll| 方案 | 可行性 | 說明 |
|---|---|---|
| 請求主機商開啟 FSO | 低 | 共享主機通常拒絕 |
| 改用 XML/資料庫儲存靜態內容 | 高 | 前端 AJAX 讀取,無需檔案系統寫入 |
| 遷移至 VPS/雲伺服器自主管理 | 高 | 完全掌控組件與權限 |
| 使用支援靜態化的 CMS (如 WordPress + WP Super Cache) | 中 | PHP 環境通常不限制檔案操作 |
三種禁用 FileSystemObject 組件的方法 (註冊表 ProGID 修改、CLSID 修改、註銷組件)