前幾天遇到一個噁心的問題,跟同事一塊解決了,在這裏記錄下過程。html
比較懶,直接轉他的blog:git
http://www.cnblogs.com/caochenghua/p/6530053.htmlgithub
報錯信息以下api
「System.IO.FileNotFoundException」類型的異常在 Google.Apis.dll 中發生,但未在用戶代碼中進行處理服務器
其餘信息: 未能加載文件或程序集「Zlib.Portable, Version=1.11.0.0, Culture=neutral, PublicKeyToken=431cba815f6a8b5b」或它的某一個依賴項。系統找不到指定的文件。google
項目中已經包含了Zlib.Portable.dll ,查看了文件屬性,確認版本號已經保持一致spa
使用PowerShell查看現有Dll的PublicKeyToken,發現是未強簽名版本。code
1 ([system.reflection.assembly]::loadfile("D:\Web\bin\Zlib.Portable.dll")).FullName 2 3 Zlib.Portable, Version=1.11.0.0, Culture=neutral, PublicKeyToken=null
那緣由應該就在這裏了,htm
找到https://github.com/google/google-api-dotnet-client-samples代碼並下載blog
用Visual Studio打開下載的項目,點項目-》管理NuGet程序包,提示自動更新依賴的DLL文件,更新完成
此時,咱們須要的Zlib.Portable.dll已經能夠在文件夾中顯示了:google-api-dotnet-client-samples-master\packages\Zlib.Portable.Signed.1.11.0\lib\portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid
打開Windows PowerShell使用如下命令比較新生成的Zlib.Portable.dll和原有的項目中Zlib.Portable.dll :
1 ([system.reflection.assembly]::loadfile("D:\Zlib.Portable.dll")).FullName 2 3 Zlib.Portable, Version=1.11.0.0, Culture=neutral, PublicKeyToken=431cba815f6a8b5b 4 5 ([system.reflection.assembly]::loadfile("D:\Web\bin\Zlib.Portable.dll")).FullName 6 7 Zlib.Portable, Version=1.11.0.0, Culture=neutral, PublicKeyToken=null
區別是後者PublicKeyToken=null前者不是,至此緣由大概明瞭,沒有強簽名的dll已經不能使用了,Google Review API對此進行了更加嚴格的限制是致使報錯的緣由吧
把新生成的Zlib.Portable.dll替換到服務器上,報錯果真消失了!恢復正常