BinaryFormatter的是能够处理系列化简单:如何配置protobuf-net的RuntimeModel.Default以支持序列化/反序列化SessionSecurityToken?
private byte[] TokenToBytes(SessionSecurityToken token)
{
if (token == null)
{
return null;
}
using (var memoryStream = new MemoryStream())
{
var binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, token);
return memoryStream.ToArray();
}
}
当我试图用protobuf网替换的BinaryFormatter:
using (var memoryStream = new MemoryStream())
{
Serializer.Serialize(memoryStream, token);
return memoryStream.ToArray();
}
我得到以下异常:
没有预期的类型,并且不能推断出合同: System.IdentityModel.Tokens.SessionSecurityToken
我尝试添加:
RuntimeTypeModel.Default.Add(typeof(SessionSecurityToken), true);
它得到过例外,但我现在得到一个零字节数组。
如何正确配置protobuf-net来序列化SessionSecurityToken?
另一方面,SessionSecurityToken没有无参数的构造函数。
using (var memoryStream = new MemoryStream(tokenAsBytes))
{
return Serializer.Deserialize<SessionSecurityToken>(memoryStream);
}
抛出一个ProtoException:
发现SessionSecurityToken
BinaryFormatter
无参数的构造函数是能够做到这一点没有任何大惊小怪:
using (var memoryStream = new MemoryStream(bytes))
{
var binaryFormatter = new BinaryFormatter();
return (SessionSecurityToken)binaryFormatter.Deserialize(memoryStream);
}
我如何正确配置protobuf-net来反序列化一个SessionSecurityToken?
您无法使用protobuf序列化SessionSecurityToken,因为它会继承不可序列化的SecurityToken。你能告诉我,你可以将SessionSecurityToken转换为byte []或某种泛型类型的其他类型,并且可以返回SessionSecurityToken表单转换类型吗?那么我可以给你一个解决方案。 @DPeden – Rezoan
你可以用SessionSecurityToken的成员创建一个新的自定义类,它可以从SessionSecurityToken成员中获取所有必要的数据吗? – Rezoan
我有完全相同的问题,与另一种类型 - 但同样确切的问题 - 你有没有解决这个问题? – VisualBean