在一台Windows 2008R2主機部署ASP.NET MVC網站,出現System.Net.Http.dll組件簽章無法驗證的訊息,難道組件被人篡改?好巧不巧MVC程式來自第三方,莫非我要被木馬屠城了,嚇到我滴了兩滴… 冷汗。
Could not load file or assembly 'System.Net.Http' or one of its dependencies. Strong name signature could not be verified. The assembly may have been tampered with, or it was delay signed but not fully signed with the correct private key. (Exception from HRESULT: 0x80131045)
無法載入檔案或組件 'Sytem.Net.Http' 或其相依性的其中之一。強式名稱簽章無法驗證。該組件可能已遭他人修改,或者為延遲簽署,但是未使用正確的私密金鑰完整簽署。
爬文後才知這是主機沒安裝.NET 4.5的症狀(這訊息也太迂迴了吧?),加上確認MVC網站規格是.NET 4.5無誤,檔案隱藏惡意程式警報解除,專心朝.NET版本問題偵辦。
由於.NET 4.5算是.NET 4.0的升級,故無法由資料夾判別。參考MSDN文件(如何:判斷安裝的 .NET Framework 版本)檢查Registry,沒看到Release DWORD,驗證機器尚未安裝.NET 4.5。
由網站下載.NET 4.5.2,安裝後重新檢查Registry:
Release機碼出現,值為379893,驗證.NET 4.5.2版安裝成功,原本的System.Net.Http簽章錯誤就此消失,狀況解除。