我正在使用 BinaryFormatter 序列化和反序列化自定义文件类型。我有一个独立的应用程序和一个 Web 应用程序,它们可以读取和写入相同的文件。独立应用程序运行良好,但是当我使用 Web 应用程序读取文件时,会引发异常。问题是我看不到到底发生了什么,我该如何调试或修复这个错误?
BinaryFormatter b = new BinaryFormatter();
b.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
b.Binder = new WebBinder();
object o = b.Deserialize(s); //Throws exception :
“System.String”类型的对象无法转换为“System.Decimal”类型。
public class WebBinder : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
Type tyType = null;
string sShortAssemblyName = assemblyName.Split(',')[0];
Assembly[] ayAssemblies = AppDomain.CurrentDomain.GetAssemblies();
foreach (Assembly ayAssembly in ayAssemblies)
{
if (sShortAssemblyName == ayAssembly.FullName.Split(',')[0])
{
tyType = ayAssembly.GetType(typeName);
break;
}
}
return tyType;
}
}
相同的文件在独立应用程序中反序列化很好??