在 Visual Studio 2005 進行 C# 專案開發時,經常會遇到各式各樣的編譯、執行階段或部署錯誤。本文彙整 32 個高頻率錯誤情境,提供成因分析與實測可行的解決方案,助您快速排除問題、提升開發效率。
成因:頁面或 Web.config 未正確設定 validateRequest 屬性,或 HTML 中重複出現 <form> 標籤。
解決:在 .aspx 頁面指示加入 ValidateRequest="false",或修改 Web.config:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
成因:SqlDataReader 無資料列卻直接呼叫 Read() 或存取欄位。
解決:必先判斷 if (reader.Read()) { ... }。
成因:資料庫欄位為 NULL,直接呼叫 ToString() 等方法。
解決:使用 Convert.IsDBNull() 或 as string 安全轉型,GridView 等控制項可用 Eval("Field", "{0}") 處理。
成因:SqlDataReader 綁定後過早關閉 Connection。
解決:使用 CommandBehavior.CloseConnection 讓 Reader 關閉時自動關閉連線,或改用 DataSet/DataAdapter 離線架構。
成因:Web.config 中虛擬路徑設定錯誤(如 FCKeditor 相關設定)。
成因:throw 或 return 後仍有程式碼。
解決:將例外拋出/返回語句移至方法末尾。
成因:未設定 DataKeyField 或 GridView 欄位數與 Cells 不符。
同第 3 點,常見於資料繫結控制項。
解決:改用 DataSet 或自訂分頁,勿使用 DataReader 直接繫結分頁控制項。
成因:資料庫中不存在該資料表,或程式碼拼字錯誤。
解決:啟用 SQL Server 遠端連線、設定固定 IP/埠號、防火牆開放 1433 埠。
成因:DateTime 欄位未指派值,預設 0001/1/1 超出 SQL Server 範圍 (1753~9999)。
解決:使用 DateTime? 可為 null 型別,或給預設有效日期。
解決:C# 方法用 (),屬性用 [] (索引子) 或無符號;資料繫結語法 <%# Eval("Field") %>。
解決:修改分層專案後需 Rebuild 整個方案 產生新 DLL。
解決:核對呼叫端與定義端參數名稱、型別、數量完全一致。
解決:啟用系統服務 Terminal Services。
解決:VS2005 → Tools → Options → Debugging → Edit and Continue 全部勾選。
解決:執行 regsvr32 vbscript.dll。
成因:變數為 null、控制項 ID 不符、未 new 初始化、找不到控制項。
解決:try-catch 捕捉、Response.Write 追蹤變數值、檢查初始化邏輯。
解決:本地安全性原則 → 軟體限制原則 → 強制 → 選「除本機管理員外所有使用者」→ 重開機。
解決:命令列執行 devenv /resetskippkgs。
解決:頁面指示加入 EnableViewState="False" EnableViewStateMac="False"。
解決:執行 Regsvr32 scrrun.dll。
解決:設定環境變數 VsLogActivity=1、複製 gdiplus.dll 至 VS Packages 目錄、執行 devenv /resetskippkgs。
解決:複製 cmd.exe 至 VS 安裝目錄 VC\BIN。
成因:硬體記憶體故障。
解決:以記事本開啟 .csproj,移除相關簽章節點。
解決:VS 命令提示字元執行 MSBuild 指令腳本修復資料庫專案建置。
解決:檢查傳入值或修改資料表欄位允許 NULL。
解決:重新建置、修正命名空間大小寫、確認 .ascx/.aspx 專案包含。
解決:虛擬目錄資料夾授予 Everyone 寫入權限。
解決:IIS 啟用匿名存取與「允許 IIS 控制密碼」。