C# 是否有可供选择的二进制格式化程序,可在中等信任度下运行
我在托管环境中运行一个网站(即,我无法控制权限),并且该网站设置为以中等信任度运行。我使用的代码序列化对象以保存在数据库中,并使用BinaryFormatter。但是,这会引发在中等信任下运行的SecurityExceptionC# 是否有可供选择的二进制格式化程序,可在中等信任度下运行,c#,.net,security,serialization,C#,.net,Security,Serialization,我在托管环境中运行一个网站(即,我无法控制权限),并且该网站设置为以中等信任度运行。我使用的代码序列化对象以保存在数据库中,并使用BinaryFormatter。但是,这会引发在中等信任下运行的SecurityException 是否有可供选择的二进制格式化程序可以在中等信任下运行?二进制格式化程序不是设计为在部分信任下工作的。.NET Framework还有其他可用的格式化程序,它们以部分信任的方式工作: XmlSerializer和DataContractSerializer适用于
是否有可供选择的二进制格式化程序可以在中等信任下运行?二进制格式化程序不是设计为在部分信任下工作的。.NET Framework还有其他可用的格式化程序,它们以部分信任的方式工作:
无论使用哪个序列化程序,某些类型根本无法在部分信任中序列化。有关更多信息,请参阅。谢谢您的评论。对于那些感兴趣的人,我最终使用了Newtonsofts JsonSerializer 使用BsonWriter,它以中等信任度工作。请参见下面的示例代码:
public object Deserialize<T>(System.IO.Stream serializationStream)
{
JsonSerializer serializer = new JsonSerializer();
T instance;
BsonReader reader = new BsonReader(serializationStream);
instance = serializer.Deserialize<T>(reader);
return instance;
}
public void Serialize(System.IO.Stream serializationStream, object graph)
{
JsonSerializer serializer = new JsonSerializer();
using (BsonWriter writer = new BsonWriter(serializationStream))
{
serializer.Serialize(writer, graph);
}
}
公共对象反序列化(System.IO.Stream serializationStream)
{
JsonSerializer serializer=新的JsonSerializer();
T例;
BsonReader=新的BsonReader(序列化流);
实例=序列化程序。反序列化(读取器);
返回实例;
}
public void Serialize(System.IO.Stream serializationStream,对象图)
{
JsonSerializer serializer=新的JsonSerializer();
使用(BsonWriter writer=新的BsonWriter(序列化流))
{
序列化器。序列化(编写器、图形);
}
}
为什么要将对象序列化为二进制以保存到数据库中?我正在使用CQRS和eventsourcing实现一个解决方案,以便使用Newtonsoft.Json将事件对象存储在单个表中;使用Newtonsoft.Json.Bson代码>通过NuGet安装后:安装软件包Newtonsoft.Json