在一個已發布的 .NET 2.0 網站(無原始碼)中新增頁面(a.html、a.ashx),並在泛型處理程式中引用 using System.Data.OracleClient。將編譯後的檔案連同存取資料庫的 DLL 直接複製到網站目錄下,卻遇到編譯器錯誤:
CS0234: 命名空間「System.Data」中不存在類型或命名空間名稱「OracleClient」(是否缺少組件引用?)
嘗試將 System.Data.OracleClient.dll 手動放入 Bin 目錄,改報錯誤:
未能載入檔案或組件「System.Data.OracleClient」或其相依項之一。嘗試載入格式不正確的程式。
.NET Framework 內建的組件(如 System.Data.OracleClient)必須在專案中透過「加入參考」正確引用,並在 web.config 的 <assemblies> 區段註冊,執行階段才能正確載入。直接複製 DLL 到 Bin 目錄無法滿足強名稱驗證與組件解析機制。
web.config 中已包含該組件的完整強名稱註冊,範例如下:<configuration>
<system.web>
<compilation debug="true" targetFramework="2.0">
<assemblies>
<add assembly="System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</assemblies>
</compilation>
</system.web>
</configuration>
重新發布網站後,錯誤即可消除。
若專案為無原始碼的已部署網站,需取得原專案原始碼重新建置,或在伺服器 GAC 中確認該組件已正確安裝。切勿嘗試手動複製系統組件至 Bin 目錄,易導致版本衝突與安全性驗證失敗。