我在托管环境中运行一个网站(即我无权控制权限),并设置为以中等信任度运行。 我使用的代码序列化对象以保存在数据库中并使用BinaryFormatter。 但是,这会抛出在中等信任下运行的SecurityException。
是否有另一种二进制格式化程序可以在中等信任下运行?
I'm running a website in a hosted environment (i.e. I don't have control over permissions) and it is set to run at medium trust. The code i'm using serializes object for saving in a database and uses the BinaryFormatter. However this throws an SecurityException running under medium trust.
Is there an alternative binary formatter which would run under medium trust?
最满意答案
BinaryFormatter的设计不适用于部分信任。 .NET Framework具有其他可用的格式化程序,它们可以部分信任:
XmlSerializer的 DataContractSerializer的 NetDataContractSerializerXmlSerializer和DataContractSerializer适用于序列化类似记录的类型,其中对象图是有限的,所有要序列化的类型都是提前知道的。 它们还可以与其他非.NET框架互操作。 NetDataContractSerializer更适用于通用.NET框架序列化,您可能不知道图中要提前序列化的所有类型。 最大的缺点是它无法轻松地与其他非.NET框架互操作,因为它包含序列化流中的类型信息。
无论您使用哪种序列化程序,某些类型根本无法在部分信任中进行序列化。 有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/bb412175.aspx 。
Thanks for the comments. For those interested i ended up using Newtonsofts JsonSerializer with the BsonWriter which works in medium trust. See Example code below:
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); } }更多推荐
发布评论