我在我的應用程序的一個遇到一個非常奇怪的異常(後來被引用爲ApplicationB)怪異的BinaryFormatter deseralization錯誤
`Unable to find assembly 'MsgPack, Version=0.5.0.0, Culture=neutral, PublicKeyToken=a2625990d5dc0167'.`
這裏是我的方案,我ApplicationA我有一個序列化的對象使用MsgPack並使用SE.Redis將其存儲到Redis中。稍後,我查詢這個對象並反序列化它(當然仍然使用MsgPack)。完成此操作後,我通過TCP/Componennt發送此對象,該對象使用BinaryFormatter對該同一對象進行序列化。另一方面,即在應用程序B,一旦數據包到達,它使用BinaryFormatter反序列化,這是我得到例外。
我對TCP/Component及其使用的序列化程序沒有任何控制權。
那麼,爲什麼我會得到這個錯誤應用程序B應該知道關於MsgPack的任何事情?
只是一個我想分享的想法,似乎MsgPack實時創建DataContract,並且在反序列化時,它可能會在與BinaryFormatter衝突的對象上應用一些屬性。當然,我不確定這一點。
但有沒有人遇到過這個問題?
乾杯。
編輯:我注意到,對於類型對象的成員,MsgPack添加了很多用於在對象成員中定義類型存儲的成員(如IsDictionary,IsList等)。它會影響BinaryFormatter嗎?
這是一個簡單的「文件未找到」錯誤。最明顯的原因是MsgPack.dll不在ApplicationB的探測路徑中。或者它有錯誤的版本。使用Fuslogvw.exe解決程序集解析問題。 –
我不需要** ApplicationB **上的MsgPack.dll,它甚至不應該知道MsgPack。 –
嗯,當然你有。它大聲地對你大喊。 –