故障現象
An error occurred on the server when processing the URL.
Please contact the system administrator.
Click here to find out more about this error.
瀏覽器僅顯示通用錯誤頁,無任何堆疊追蹤、行號、異常類型,開發/運維無從下手。
根因
IIS 7+ 預設隱藏詳細錯誤(httpErrors errorMode="DetailedLocalOnly"),遠端訪問只見友好頁。需顯式開啟「將錯誤傳送至瀏覽器」。
圖形化操作步驟(IIS 管理員)
- 打開 IIS 管理員 (
inetmgr)。
- 左側連線樹選中目標 網站 或 應用程式。
- 中間功能視圖雙擊 ASP 圖示(若無,需在「角色服務」安裝 ASP)。
- 展開 偵錯屬性 → 找到 將錯誤傳送至瀏覽器 (
scriptErrorSentToBrowser)。

- 將值從 False 改為 True。
- 點擊右側動作欄 套用。
- 重新整理瀏覽器,即可看到完整錯誤堆疊(行號、檔案、異常訊息)。
Web.config 等效配置(無圖形介面/自動化部署)
<configuration>
<system.webServer>
<asp scriptErrorSentToBrowser="true" />
</system.webServer>
</configuration>
或針對經典 ASP:
<configuration>
<system.web>
<customErrors mode="Off" /> <!-- ASP.NET -->
</system.web>
</configuration>
安全警示與生產環境策略
| 環境 | 建議設定 | 原因 |
| 開發/測試/Staging | true / Off | 即時除錯、降低 MTTR |
| 生產 | false / RemoteOnly + 自訂錯誤頁 | 防止洩露堆疊、路徑、資料庫結構、版本資訊給攻擊者 |
生產最佳實踐:
- 保持
scriptErrorSentToBrowser="false"。
- 配置
<httpErrors errorMode="Custom" existingResponse="Auto"> 指向友好錯誤頁(/error/500.html、/error/404.html)。
- 關鍵錯誤寫入 Windows 事件日誌 / ELK / Sentry,告警通知開發團隊。
- 排查時臨時開啟、定位完成立即關閉,納入變更管理流程。
擴展:ASP.NET Core / PHP / Node.js 同理
- ASP.NET Core:
app.UseDeveloperExceptionPage() 僅在 env.IsDevelopment() 啟用。
- PHP:
display_errors = Off、log_errors = On、error_log = /var/log/php_errors.log。
- Node.js (IISNode):
NODE_ENV=production、自訂錯誤中間件。
總結
IIS 站點報錯無詳情,90% 是 ASP → 偵錯屬性 → 將錯誤傳送至瀏覽器 = False。一鍵改 True 即見真章。生產環境嚴禁常開,排查完畢立即還原,配合自訂錯誤頁與集中式日誌,兼顧體驗與安全。