首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MySQL Connector/NET "無法加載 MySql.Web.v20" 異常排查:版本、位數、GAC 三步驟

     編輯:程式設計綜合問答

異常信息

Could not load file or assembly 'MySql.Web.v20, Version=6.9.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies.

三大核心檢查項

1. DLL 文件是否存在且版本匹配

  • 檢查項目引用的 MySql.Web.v20.dll 物理文件是否在 bin 目錄或 GAC 中。
  • 屬性 → 詳細信息 → 文件版本 **必須為 6.9.3.0**,任何大/小版本不一致都會導致載入失敗。
  • NuGet 套件 MySql.Web 版本需與 MySql.Data、MySql.Data.Entity **嚴格對齊**(如全部 6.9.3 或全部 8.0.x)。

2. 進程位數(x86 vs x64)一致性

  • 錯誤截圖顯示為 32 位異常(SysWOW64 路徑)。
  • **關鍵設置**:
    • IIS 應用程序池 → 高級設置 → **啟用 32 位應用程序 = True**(若強制用 32 位 DLL)。
    • 或項目屬性 → Build → **取消勾選 "Prefer 32-bit"**,配合 64 位 MySQL Connector 運行。
    • 不要混用:專案 32 位 + 系統 64 位 Connector,或反之。

3. GAC / 部署遺漏

  • MySQL Connector/NET 安裝程序會將程序集註冊到 GAC。若生產機未運行安裝程序,僅複製 bin 文件,**MySql.Web.v20 可能缺失**(它不隨 MySql.Data 自動輸出)。
  • 解決:在生產機運行 mysql-connector-net-6.9.3.msi 完整安裝,或手動 gacutil /i MySql.Web.v20.dll。

快速修復清單

  1. 右鍵解決方案 → **管理 NuGet 套件** → 統一更新 MySql.Data、MySql.Web、MySql.Data.Entity、MySql.Data.EntityFramework 至相同版本(建議 8.0.x LTS)。
  2. 刪除 bin、obj、packages 目錄 → 重新生成。
  3. 檢查 web.config 中 <assemblyBinding> 的 dependentAssembly 版本重定向是否指向正確版本。
  4. IIS 應用程序池位數設置與項目編譯目標一致。
  5. 生產環境運行 MySQL Connector 安裝包,確保 GAC 註冊。

遷移建議:棄用 MySql.Web.v20

MySql.Web 程序集主要提供 ASP.NET Membership/Role/Profile Provider,**已屬舊技術棧**。現代項目建議:

  • 使用 ASP.NET Core Identity + Pomelo.EntityFrameworkCore.MySql。
  • 或直接調用 MySql.Data 原生 ADO.NET,輕量無依賴。

總結

「無法加載 MySql.Web.v20」90% 為 **版本不一致** 或 **位數不匹配** 導致。統一 NuGet 版本、對齊編譯目標位數、確保 GAC 註冊,三步解決 99% 場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved