我们从源代码管理重建了DD4T TBB,并使用TCMUploadAssembly.exe将它们部署到了tridion。
我们创建了一个带有多媒体链接字段,组件链接字段和文本字段的简单组件,并填充了这些值。然后使用[生成动态组件,发布组件的二进制文件] TBB创建了一个CT,并尝试发布一个DCP。
我们能够在模板构建器中对组件运行CT并获得预期的输出[即格式良好的序列化组件XML输出]
但是,在发布时,我们会收到序列化错误。 (见下文) 。当代码尝试序列化任何组件字段(文本/多媒体/组件链接等)时发生此错误
我们无法确定根本原因。尝试远程调试代码,即使在序列化组件对象时正确设置了所有dynamic.component对象属性,我们也面临此问题。甚至试图重新启动COM +,发布者服务但问题仍然存在。任何指针都非常受欢迎。
无法在没有序列化错误的情况下找到代码在“模板”构建器中正确运行的原因,但在发布时失败并且出现以下错误。
以下是错误消息:
生成XML文档时出错。
生成XML文档时出错。
对象引用未设置为对象的实例。
组件:模板
错误代码:0
用户:NORD \ DWTMTSUser
StackTrace信息详情:
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.XSArrayInfo.get_Item(Object a,Int32 i)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.Write13_Field(String n,String ns,Object o,Boolean isNullable,Boolean needType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.Write14_Field(Object o)
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o,XmlSerializerNamespaces namespaces,String encodingStyle,String id)
在System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o)
位于D:\ DW-Source \ Mainline \ Src \ DD4T \ DD4T.ContentModel \ SerializableDictionary.cs:第80行的DD4T.ContentModel.SerializableDictionary`3.WriteXml(XmlWriter writer)
在System.Xml.Serialization.XmlSerializationWriter.WriteSerializable(IXmlSerializable serializable,String name,String ns,Boolean isNullable,Boolean wrapped)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write13_Component(String n,String ns,Component o,Boolean isNullable,Boolean needType)in:line 0
位于:第0行的Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write32_Component(Object o)
在Microsoft.Xml.Serialization.GeneratedAssembly.ComponentSerializer.Serialize(Object objectToSerialize,XmlSerializationWriter writer)中:第0行
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o,XmlSerializerNamespaces namespaces,String encodingStyle,String id)
at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o,XmlSerializerNamespaces namespaces,String encodingStyle,String id)
在System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o,XmlSerializerNamespaces namespaces,String encodingStyle)
在System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o,XmlSerializerNamespaces名称空间)
在D:\ DW-Source \ Mainline \ Src \ DD4T \ DD4T.Templates.Base \ BaseComponentTemplate.cs:第88行中的DD4T.Templates.Base.BaseComponentTemplate.Transform(引擎引擎,包程序包)
at Tridion.ContentManager.Templating.Assembly.AssemblyMediator.Transform(Engine engine,Template template,Package package)
at Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.RunTemplate(Engine engine,Package package,String templateUri,String className)
at Tridion.Templating.CSharpTemplate.CSharpSourceTemplate.Transform(Engine __engine,Package __package)
at Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.Transform(Engine engine,Template template,Package package)
在Tridion.ContentManager.Templating.Engine.ExecuteTemplate(模板模板,包裹包)
答案 0 :(得分:2)
Quirijn的答案对你有帮助吗? https://groups.google.com/d/msg/dynamic-delivery-4-tridion/K0BzzPovUz4/1RvTHFHktukJ
此外,如果您有多个发布者,请确保将DD4T.Templates.Base.dll添加到所有发布者的GAC中。 (如果你已经选择Q的答案选项2)