我有一个网站项目,我需要将其转换为Web应用程序。解决所有编译错误后,我在从Telerik's website获得的一段代码中遇到了运行时异常。
在我反序列化网格设置数据的部分,我遇到了异常
System.ArgumentException
HResult=0x80070057
Message=The serialized data is invalid.
Source=BMS.WebApp
Inner Exception 1:
SerializationException: Unable to find assembly 'App_Code.5gd62bdt, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
public static GridSettingsCollection LoadFromSerializedData(string data)
{
LosFormatter formatter = new LosFormatter();
// the line that throws the exception: formatter.Deserialize(data)
return (GridSettingsCollection)formatter.Deserialize(data);
}
当它是一个Web站点项目时,这没有问题。我猜想以App_Code。*开头的程序集通常意味着它在运行时进行编译。我尝试清除所有ASP临时文件夹。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
Telerik本身不是问题,但一般来说是序列化。 Telerik的示例中的GridSettingsCollection
使用[Serializable]
属性,该属性又使用BinaryFormatter
进行序列化。除了二进制对象数据外,它还存储序列化对象的类元数据,包括程序集名称。
如果更改程序集名称(在将网站转换为Web应用程序时发生),并且仍然需要使用旧的序列化数据,则必须像在SerializationBinder
中一样使用this answer。 / p>