Assembly.load
を使用して動的にプラグインアセンブリをロードするCMS用のプラグインを作成しています。動的にロードされたアセンブリのXML逆シリアル化に関するNullReferenceException
注:フロントエンドはアセンブリに静的にロードしますが、管理環境では動的にロードされます。
マイプラグインには、初めてプラグインクラスが使用されるときに読み込まれる独自のxml構成ファイルがあります。設定ファイルは、XmlSerializer
を使用してオブジェクトオブジェクトに逆シリアル化されます。
このデシリアライズは、アセンブリをフロントエンドから静的にロードすると問題なく動作しますが、管理者が動的にロードしようとすると、リーダーからNullReferenceException
が返されます。
私はSgenを使用してシリアル化アセンブリを事前生成し、それを管理環境の "Bin"ディレクトリに追加しようとしましたが、これは効果がないようです。
スタックトレース:
[NullReferenceException: Object reference not set to an instance of an object.]
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAccessibilityConfig..cctor() +1156
[TypeInitializationException: The type initializer for 'Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAccessibilityConfig' threw an exception.]
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAccessibilityConfig..ctor() +0
Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializerContract.get_Reader() +44
System.Xml.Serialization.TempAssembly.InvokeReader(XmlMapping mapping, XmlReader xmlReader, XmlDeserializationEvents events, String encodingStyle) +69
System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) +101
[InvalidOperationException: There is an error in XML document (0, 0).]
System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) +613
System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader) +30
CoA.WebUI.Controls.AccessibilityObjects.AccessibilityConfigBase`1.Deserialize(String xml) +196
CoA.WebUI.Controls.AccessibilityObjects.AccessibilityConfigBase`1.LoadFromFile(String fileName) +256
CoA.WebUI.Controls.Accessibility.Configure(Boolean isAdmin) +725
CoA.WebUI.Controls.Accessibility.GetProperties() +118
CMS.Admin.WebUI.CustomControlCreator.GetCustomControlProperties() +194
CMS.Admin.WebUI.CustomControlCreator.BindPropertyControls() +146
CMS.Admin.WebUI.CustomControlCreator.PageLoad() +164
CMS.Admin.WebUI.CustomControlCreator.Page_Load(Object sender, EventArgs e) +47
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
は奇妙なことに、スタックトレースは、XML文書が空であることを示しているようだが、私は、私はデバッグと確認しているにStringReaderに渡しているが、正しい文書が移入されました - それは空ではありません。
これはデバッガで手を汚す必要がある場所です。 – Zenexer
あなたは私に言いました、私は昨日すべてを一歩踏みとどめてしまいました。私はそれを理解できません。 –
BinaryFormatterを試しましたか?とにかくXmlSerializerで大したことはありませんでした。 – Zenexer