寫WCF好一陣子,常常在WCF程式碼完全沒更動的情況下,WCFName.svc忽然傳回以下錯誤。

Could not load file or assembly 'App_Web_9wddxbri, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.

我後來試出最簡單的解法是在WCFName.svc.cs隨便加一個空白再存檔,觸發ASP.NET Web Site Project重新編譯後,問題就可解決。(我猜IISReset或Restart Web Application都有同樣效果,但這樣做最快)

今天忽然鋸箭鋸得有點煩,就找了一下根治的方法。在ScottGu的Blog找到這篇文章,看起來這是ASP.NET的Bug,不過我只有在跑.svc時才會遇到。懶得安裝Hotfix,於是修改了<compilation batch="false"></compilation>,試跑了幾天,果真就再也沒發生找不到Assembly的錯誤。

只是,取消批次編譯應該或多或少會降低效能,安裝Hotfix或Patch,設法修正Bug應該還是最佳的解決方案。


Comments

# by tomexou

黑暗大會採取不裝patch的踞箭方式解決,想必該主機另有其他服務在運作,懶得裝patch吧(尤其可能要reboot)!? 以前我對不太好的程式架構,總像蝙蝠俠性格般要全部糾出改寫,現在為了時間成本考量,有時候要壓抑這樣的衝動,修修能動就行了 (尤其是別人寫的東西)

# by Jason

請教一下,微軟有把這個patch加入到最新版的framework中嗎? 因為我之前好像也遇到這個問題但我目前用的是最新版的 .net 3.5 SP1 不知道需不需要再安裝這個hotfix Thanks

# by Jeffrey

to Jason, 我的問題發生在已裝.NET 3.5 SP1的機器上。不過你可以試看看先不裝Hotfix,說不定你不會遇上。

Post a comment