2016-06-28 8 views
2

KontextWarum kann DataContractSerializer Entity nicht in Plugins serialisieren, die in der CRM-Sandbox-Isolierung registriert sind?

Ich möchte Entity (EntityCollection) in einem Plugin, das CRM in Sandbox-Isolationsmodus 2016. die Ausnahme Siehe unten registriert serialisiert werden.

Frage

Genau das, was diese Klasse versucht zu tun, was nicht in Sandbox Isolation erlaubt? (Ich frage das, in der Hoffnung, wird das Verständnis zu einer Vermeidung des Problems/Trick/Hack führen. Ich möchte nicht benutzerdefinierte XML-Serialisierung-Code schreiben, weder benutzerdefinierte POCO-s erstellen und die Attribute kopieren.)

anfordern für die Berechtigung vom Typ 'System.Security.Permissions.SecurityPermission, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' fehlgeschlagen. bei System.Security.CodeAccessSecurityEngine.Check (Object Nachfrage, StackCrawlMark & stackMark, Boolean isPermSet) bei System.Security.CodeAccessPermission.Demand() bei System.Runtime.Serialization.XmlObjectSerializerContext.DemandSerializationFormatterPermission() bei WriteKeyValuePairOfstringanyTypeToXml (XmlWriterDelegator, Gegenstand, XmlObjectSerializerWriteContext, ClassDataContract) bei System.Runtime.Serialization.ClassDataContract.WriteXmlValue (XmlWriterDelegator xmlWriter, Objekt OBJ, XmlObjectSerializerWriteContext context) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue (Datacontract Datacontract, XmlWriterDelegator xmlWriter, Objekt OBJ, Runtimetypehandle declaredTypeHandle) bei System.Runtime. Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType (Datacontract Datacontract, XmlWriterDelegator xmlWriter, Objekt OBJ, Runtimetypehandle declaredTypeHandle) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize (XmlWriterDelegator xmlWriter, Objekt obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, declaredTypeHandle Runtimetypehandle) an WriteAttributeCollectionToXml (XmlWriterDelegator, Objekt, XmlObjectSerializerWriteContext, CollectionDataContract) bei System.Runtime.Serialization.CollectionDataContract.WriteXmlValue (XmlWriterDelegator xmlWriter, Objekt OBJ, XmlObjectSerializerWriteContext context) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue (Datacontract Datacontract, XmlWriterDelegator xmlWriter, Object obj, RuntimeTypeHandle deklariertTypHandl e) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType (Datacontract Datacontract, XmlWriterDelegator xmlWriter, Objekt OBJ, Runtimetypehandle declaredTypeHandle) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize (XmlWriterDelegator xmlWriter, Objekt obj, Boolean isDeclaredType, Boolean writeXsiType, int32 declaredTypeID, declaredTypeHandle Runtimetypehandle) bei WriteContactToXml (XmlWriterDelegator, Objekt, XmlObjectSerializerWriteContext, ClassDataContract) bei System.Runtime.Serialization.ClassDataContract.WriteXmlValue (XmlWriterDelegator xmlWriter, Objekt OBJ, XmlObjectSerializerWriteContext context) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue (DataContract dataContract, XmlWriterDelegator xmlWriter, Objekt obj, Runt imeTypeHandle declaredTypeHandle) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeAndVerifyType (Datacontract Datacontract, XmlWriterDelegator xmlWriter, Objekt obj, Boolean verifyKnownType, Runtimetypehandle declaredTypeHandle, Typ declaredType) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithXsiType (XmlWriterDelegator xmlWriter, Objekt obj, Runtimetypehandle objectTypeHandle, Typ object, Int32 declaredTypeID, Runtimetypehandle declaredTypeHandle, Typ declaredType) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize (XmlWriterDelegator xmlWriter, Objekt obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, Runtimetypehandle declaredTypeHandle) bei WriteArrayOfEntityToXml (XmlWriterDelegator, Objekt, XmlObjectSerializerWriteContext, CollectionDataContract) bei System.Runtime.Serialization.CollectionDataContract.WriteXmlValue (XmlWriterDelegator xmlWriter, Objekt OBJ, XmlObjectSerializerWriteContext context) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue (Datacontract Datacontract , XmlWriterDelegator xmlWriter, Objekt obj, RuntimeTypeHandle decl redTypeHandle) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType (Datacontract Datacontract, XmlWriterDelegator xmlWriter, Objekt OBJ, Runtimetypehandle declaredTypeHandle) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize (XmlWriterDelegator xmlWriter, Objekt obj, Boolean isDeclaredType, Boolean writeXsiType, int32 declaredTypeID, declaredTypeHandle Runtimetypehandle) bei WriteEntityCollectionToXml (XmlWriterDelegator, Objekt, XmlObjectSerializerWriteContext, ClassDataContract) bei System.Runtime.Serialization.ClassDataContract.WriteXmlValue (XmlWriterDelegator xmlWriter, Objekt OBJ, XmlObjectSerializerWriteContext context) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue (DataContract dataContract, XmlWriterDelegator xmlWri ter, Objekt OBJ, Runtimetypehandle declaredTypeHandle) bei System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType (Datacontract Datacontract, XmlWriterDelegator xmlWriter, Objekt OBJ, declaredTypeHandle Runtimetypehandle) bei System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent (XmlWriterDelegator writer, Objektgraphen, dataContractResolver dataContractResolver) bei System.Runtime.Serialization.DataContractSerializer.InternalWriteObject (XmlWriterDelegator writer, Objektdiagramm, dataContractResolver dataContractResolver) bei System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions (XmlWriterDelegator writer, Objektdiagramm, dataContractResolver dataContractResolver) bei System.Runtime .Serialization.XmlObjectSerializer.WriteObject (XmlDictionaryWriter-Schreiber, Object gr aph) bei System.Runtime.Serialization.XmlObjectSerializer.WriteObject (Stream Stream, Object Graph)

+0

Haben Sie versucht, das Plugin ohne Implementierung auszuführen? –

Antwort

2

Sandbox-Plugins fehlen Berechtigungen nicht-öffentliche Mitglieder zu serialisiert (Refection erfordert vollständige Code-Vertrauen). Wenn Sie also nicht vor Ort sind, wäre die einzige Option, benutzerdefinierte POCO mit öffentlichen Mitgliedern zu haben und das Objekt zu serialisieren.

+0

1) Die Ausnahme scheint mir keine Reflexion Erlaubnis Verletzung, obwohl es wahr ist DataContractSerializer serialisiert private Mitglieder. Was ist mit XmlSerializer? Es kümmert sich nur um öffentliche Mitglieder. –

+0

Solange Reflektion nicht verwendet wird, was wiederum dazu führt, dass das Plugin auf GAC dlls zugreift, was nicht erlaubt ist, sollte es in Ordnung sein. – dynamicallyCRM