1

カスタム ファイル タイプのシリアル化と逆シリアル化に 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;
        }
    }

同じファイルがスタンドアロン アプリで正常に逆シリアル化されますか??

4

1 に答える 1

2

すべての例外で中断するように Visual Studio を設定します。Debug/Exceptions で次のように変更します。

ここに画像の説明を入力

これにより、問題が発生している正確なコード行が表示されます。

于 2012-06-08T13:01:58.883 に答える