將開發完成的 ASP.NET + Access (Jet OLEDB) 應用程式部署至生產伺服器 (Windows 2000/2003 + IIS),常因缺少運行時元件、路徑錯誤、權限不足而失敗。以下系統化部署檢查清單與配置步驟。
bin、web.config、.aspx 等)Default.aspx、Index.aspx
<connectionStrings>
<add name="AccessConn"
connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB.mdb;Persist Security Info=False;"
providerName="System.Data.OleDb" />
</connectionStrings>
|DataDirectory| 自動解析為 App_Data 資料夾絕對路徑,避免硬編碼路徑。string path = Server.MapPath("~/App_Data/DB.mdb");D:\Web\DB.mdb),部署環境路徑不同會失效。.mdb / .accdb 放入 App_Data 資料夾IIS_IUSRS (或應用程式集區身分識別帳號)| 錯誤訊息 | 原因 | 解決 |
|---|---|---|
| Microsoft.Jet.OLEDB.4.0 提供者未註冊 | 缺少 MDAC / Access Database Engine | 安裝對應版本;確認應用程式集區啟用 32 位元 |
| 未找到可安裝的 ISAM | 連接字串 Provider 錯誤或版本不符 | .mdb 用 Jet 4.0;.accdb 用 ACE 12.0/16.0 |
| 磁碟已滿 / 無法鎖定檔案 | App_Data 權限不足 | 授予 IIS_IUSRS 修改權限 |
| 路徑格式不支援 | 連接字串路徑含特殊字元或 UNC 路徑處理錯誤 | 使用 Server.MapPath 或 |DataDirectory| |
Access 適合極小型、單機、低併發場景。生產環境建議遷移至:
[ ] .NET Framework 版本正確
[ ] Access Database Engine (32-bit) 已安裝
[ ] 應用程式集區「啟用 32 位元應用程式」= True
[ ] 連接字串使用 |DataDirectory| 或 Server.MapPath
[ ] App_Data 資料夾權限:IIS_IUSRS 具備修改權限
[ ] .mdb/.accdb 檔案已放入 App_Data
[ ] Web.config 編譯目標框架正確
[ ] 全域錯誤處理 (customErrors / httpErrors) 已設定
[ ] 連接字串加密 (aspnet_regiis -pef connectionStrings)
完成上述配置,ASP.NET + Access 應用程式即可在生產環境穩定運行。