binaryFormatter.Deserialize(stream):调试和修复错误

时间:2012-06-08 12:51:47

标签: c# .net serialization deserialization binary-serialization

我正在使用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;
        }
    }

同一个文件在独立应用程序中反序列化很好??

1 个答案:

答案 0 :(得分:2)

我会将Visual Studio设置为中断所有异常。在Debug / Exceptions中更改为:

enter image description here

这将显示发生问题的确切代码行。