Google Review中Zlib.Portable報錯的一種排查解決方案

前幾天遇到一個噁心的問題,跟同事一塊解決了,在這裏記錄下過程。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替換到服務器上,報錯果真消失了!恢復正常

相關文章
相關標籤/搜索