javascript執行階段錯誤:UnhandledError in Silverlight Application作業間發生例外狀況 如需詳細資訊 請檢查InnerException
我在建置Silverlight(簡稱S)與WCF 的相關連接專案上,S跑起來後原本錢一個禮拜都沒問題,
突然就出現了這個錯誤訊息
好險之前有備份沒問題的WCF,再把之前的WCF放在IIS底下再跑S就沒有問題
因此判斷問題在WCF上
但是不管切到之前的版本一直重build website都還是初線一樣的問題
最後我無意間發現有問題的WCF丟下去IIS後跑起來的Service.svc網頁竟然有錯誤訊息
類似
---------------------------
無法載入檔案或組件 'XXXX專案名稱' 或其相依性的其中之一。 試圖載入格式錯誤的程式。
描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外詳細資訊: System.BadImageFormatException: 無法載入檔案或組件 'Luna.Common' 或其相依性的其中之一。 試圖載入格式錯誤的程式。
組件繫結記錄切換為OFF。
--------------------------------
然後孤狗關鍵字一下會發現很多人也遇過這問題有寫出解法,主要就是去iis應用程式集區>進階設定>把啟用32位元設成True 就可以了
例如下面這篇文章
http://jumping-fun.blogspot.tw/2012/07/64bit-iis-32bit.html
http://huan-lin.blogspot.com/2011/03/aspnet-windows-x64.html
或是把你的dll全都確定換成64位元應該就也沒問題了
這邊提供另個檢查方式,
也可以檢查你的visual studio 所有專案有沒有都用64位元編譯
visual studio 有三種編譯的方式
-
On a 32-bit machine:
-
Any CPU: runs as a 32-bit process, can load Any CPU and x86 assemblies, will get
BadImageFormatException
if it tries to load an x64 assembly. -
x86: same as Any CPU.
On a 64-bit machine:
Any CPU: runs as a 64-bit process, can load Any CPU and x64 assemblies, will get BadImageFormatException
if it tries to load an x86 assembly.
x86: runs as a 32-bit process, can load Any CPU and x86 assemblies, will get BadImageFormatException
if it tries to load an x64 assembly.
x64: same as Any CPU.
詳見這幾個參考網址
http://stackoverflow.com/questions/5229768/c-sharp-compiling-for-32-64-bit-or-for-any-cpu
http://stackoverflow.com/questions/516730/what-does-the-visual-studio-any-cpu-target-mean
簡單來講你電腦是64bit,在visual studio 設成AnyCPU就是編譯成64bit
了解之後,如果要對單一專案設,可以在Solution Explorer的你要的專案名稱上 右鍵>Properties>然後在屬性視窗左測選單選Build 然後在右邊的
我不確定是不是Configuration 和Platform都要調成AnyCPU,應該兩個都調比較保險
有另一個滿方便的方式,
先放參考文章
https://msdn.microsoft.com/en-us/library/ms165408.aspx?f=255&MSPPError=-2147217396
方式是,在visual studio 最上方的menu的Build>Configuration Manager
http://i.imgur.com/iryaB9u.png
可以一次調整所有專案的Configuraiton,相當方便
全部調成Any CPU 再全部專案重Clean再重Build然後Publish專案應該就可以過了