ASP.NET 開發過程中,編譯錯誤與執行時例外層出不窮。本文彙整 20 種高頻錯誤,提供成因分析、解決方案與預防建議,助你快速定位並解決問題。
| # | 錯誤訊息關鍵字 | 核心原因 | 快速解決 |
|---|---|---|---|
| 1 | 潛在危險的 Request.Form 值 | 請求驗證攔截 HTML/Script 內容 | 頁面或 web.config 設 validateRequest="false" |
| 2 | 無效的讀取嘗試 (SqlDataReader) | Reader 無資料卻嘗試 Read | 先判斷 if (reader.Read()) |
| 3 | 不能對空值調用方法/屬性 | 物件為 null 呼叫 ToString() 等 | 加入 null 檢查或 ?. 操作符 |
| 4 | DataReader 關閉時 FieldCount 無效 | Connection 過早關閉 | 使用 CommandBehavior.CloseConnection 或延後關閉 |
| 5 | 未能映射路徑 | 虛擬路徑配置錯誤 | 檢查 web.config 路徑設定,使用 Server.MapPath |
| 6 | Unreachable code detected | return/throw 後仍有程式碼 | 移動 return/throw 至區塊末尾 |
| 7 | 索引超出範圍 | DataKeyField 未設或 Cells 索引錯誤 | 設定 DataKeyField、檢查 Cells.Count |
| 8 | 未找到路徑 C:\ 部分 | 權限不足或路徑不存在 | 授予 IIS_IUSRS 讀寫權限、確認路徑存在 |
| 9 | 資料源不支援伺服器端分頁 | DataReader 不支援分頁 | 改用 DataSet/DataTable 或自訂分頁 |
| 10 | 物件名稱無效 | 資料表不存在或權限不足 | 確認表名、修改擁有者為 dbo |
| 11 | SQL Server 遠程連接失敗 | 未啟用遠程連接/防火牆阻擋 | 啟用 TCP/IP、Named Pipes、設定防火牆規則 |
| 12 | SqlDateTime 溢出 | DateTime 最小值 1753/1/1 | 檢查 DateTime 欄位是否為 MinValue,使用 nullable |
| 13 | 屬性/方法語法錯誤 | VB/C# 語法混淆或綁定語法錯誤 | 屬性用 []、方法用 ()、綁定用 Eval/Bind |
| 14 | 無法從組件載入類型 | DLL 未重新編譯/版本不符 | Clean + Rebuild 方案 |
| 15 | 參數過多 | 存儲過程參數與呼叫不符 | 核對參數名稱、數量、型別 |
| 16 | 無法啟動偵錯,綁定句柄無效 | Terminal Services 未啟動 | 服務中啟動 Terminal Services |
| 17 | Integrated Windows Authentication 未啟用 | VS 偵錯設定缺失 | Tools→Options→Debugging→Edit and Continue 全勾選 |
| 18 | Automation: RegExp 類別未找到 | VBScript DLL 未註冊 | 執行 regsvr32 vbscript.dll |
| 19 | NullReferenceException | 物件未實例化/控制項 ID 不符 | 檢查 new、FindControl、傳遞參數 |
| 20 | 錯誤 1718 (VS2005 SP1 安裝) | 軟體限制策略阻擋 | 本地安全策略→軟體限制→強制→排除管理員 |
成因:ASP.NET 內建請求驗證偵測到 `