症状
请考虑以下情况:
-
在 Microsoft.NET Framework 2.0 Service Pack 2 (SP2) 或 Microsoft.NET Framework 3.5 Service Pack 1 (SP1) 中,您使用BinaryFormatter对象进行序列化和反序列化程序集中的泛型类型。
-
在服务器和客户端之间共享程序集,该程序集具有强名称。
-
生成版本的程序集在服务器和客户端之间互不相同。
在这种情况下,您收到以下异常错误消息之一时您的程序集的流反序列化:
错误消息 1
System.Runtime.Serialization.SerializationException: 无法找到程序集。
错误消息 2
System.IO.FileLoadException: 无法加载文件或程序集公、 版本 = 区域性的版本 ID 程序 = 键号或其中一个依赖项。 找到的程序集清单定义与程序集引用不匹配。 (从 HRESULT 异常: 0x80131040) 在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 如果您注册该程序集在 GAC 中,则会收到以下异常: System.InvalidCastException: 返回参数具有无效的类型。
注意
-
使用SoapFormatter对象时,不会出现此问题。
-
即使您将FormatterAssemblyStyle.Simple值设置序列化和反序列化时,将发生此问题。
解决方案
修补程序替换信息
对应于 KB960442 的热修复程序已取代了该修补程序 KB981574,其中包含以前在 KB960442 中包含的所有修复程序。 应使用修补程序 KB981574 来解决 KB960442 中描述的问题。有关详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
981574 初始屏幕保持打开状态比平常再尝试在已安装.NET Framework 3.5 SP1 的计算机上启动 Excel 时
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
更多信息
有关软件更新术语的更多信息,请单击下面的文章编号以查看 Microsoft 知识库中的相应文章:
824684 用于描述 Microsoft 软件更新的标准术语的说明