部署包含 LinqToExcel 組件的 Web 應用程式時,可能發生【試圖載入格式錯誤的程式】的錯誤

本文將介紹當您嘗試部署包含 LinqToExcel 組件的 Web 應用程式時,發生【試圖載入格式錯誤的程式】錯誤的可能解決方案。

情境說明

當您嘗試在 x64 的開發環境中使用 LinqToExcel 組件來存取 EXCEL 檔案,本機測試都可正常運行,但部署到IIS 7.5 時發生【Could not load file or assembly ‘LinqToExcel’ or one of its dependencies. 試圖載入格式錯誤的程式】。

image

問題發生原因

由於 LinqToExcel 僅支援 x86 模式,預設 IIS 7.5 的應用程式集區使用的是 x64 模式,因此當您部署在 IIS 上就可能發生上述的錯誤訊息。

解決方式

請開啟 IIS 管理員,於應用程式集區頁面中點選您的應用程式所使用的應用程式集區(本文以 ASP.NET v4.0 的應用程式集區為例),接著點選【進階設定】。

 

image

 

將【一般 > 啟用 32 位元應用程式】設定為 True,然後按確定。

 

image

 

接著在工作管理員中您可以看到該應用程式集區的 w3wp.exe 處理程序後方已經多了一個【*32】的字樣,表示該處理程序是以 32 位元模式執行。

 

image

 

最後重新執行您的 Web 應用程式應該就可以正常運作了。

 

【參考資料】

- IIS7 - Running 32-bit and 64-bit ASP.NET versions at the same time on different worker processes

- Could not load file or assembly 'LinqToExcel' or one of its dependencies when browse with IIS