我有一个从Exception继承的类,它用[Serializable]
装饰,并且还实现了ISerializable
:
protected MyException(SerializationInfo info, StreamingContext context)
{
if (info != null)
{
this.MyProperty = (Dictionary<string, string>)info.GetValue("MyProperty ", typeof(Dictionary<string, string>));
}
}
[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
base.GetObjectData(info, context);
if (info != null)
{
info.AddValue("MyProperty ", this.MyProperty );
}
}
一切都按预期进行,该类已在WebApi项目上序列化并在客户端上反序列化。
同时,我已经更新了我所有的Nuget软件包(Newtonsoft,WebApi2等),突然之间,在控制器的操作中对类进行序列化不会调用ISerializable
构造函数。因此,客户端在反序列化时找不到自定义属性。
使用JsonConvert.Serialize
和JsonConvert.Deserialize
手动对异常进行序列化/反序列化(出于测试目的)时,一切正常。因此,这在Json.Net上不是问题,但在Asp.Net管道中可能有问题。
此问题与WebApi2软件包的最新更新有关吗?我需要更改代码还是缺少某些内容?