1

我们从源代码控制重建了 DD4T TBB,并使用 TCMUploadAssembly.exe 将它们部署到 tridion。

我们创建了一个带有多媒体链接字段、组件链接字段和文本字段的简单组件,并填充了这些值。然后创建了一个 CT,其中包含 [生成动态组件,为组件发布二进制文件] TBB,并尝试发布单个 DCP。

我们能够在模板生成器中针对组件运行 CT 并获得预期的输出 [即格式良好的序列化组件 XML 输出]

但是,在发布时,我们会收到序列化错误。(见下文) 。代码尝试序列化任何组件字段(文本/多媒体/组件链接等)时发生此错误

我们无法确定根本原因。尝试远程调试代码,即使在序列化我们面临这个问题的组件对象时正确设置了所有 dynamic.component 对象属性。即使尝试重新启动 COM+、发布服务,但问题仍然存在。任何指针都受到高度赞赏。

无法找到代码在模板生成器中正确运行而没有序列化错误但在发布时失败并出现以下错误的原因。

这是错误消息:

生成 XML 文档时出错。

生成 XML 文档时出错。

你调用的对象是空的。

组件:模板

错误代码:0

用户:NORD\DWTMTSUser

StackTrace 信息详细信息:

在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.XSArrayInfo.get_Item(对象 a,Int32 i)

在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.Write13_Field(字符串 n,字符串 ns,对象 o,布尔 isNullable,布尔需要类型)

在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.Write14_Field(对象 o)

在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,对象 o,XmlSerializerNamespaces 命名空间,字符串 encodingStyle,字符串 id)

在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,对象 o)

在 DD4T.ContentModel.SerializableDictionary`3.WriteXml(XmlWriter writer) 在 D:\DW-Source\Mainline\Src\DD4T\DD4T.ContentModel\SerializableDictionary.cs:line 80

在 System.Xml.Serialization.XmlSerializationWriter.WriteSerializable(IXmlSerializable 可序列化,字符串名称,字符串 ns,布尔 isNullable,布尔包装)

在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write13_Component(String n, String ns, Component o, Boolean isNullable, Boolean needType) in :line 0

在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write32_Component(Object o) in :line 0

在 Microsoft.Xml.Serialization.GeneratedAssembly.ComponentSerializer.Serialize(Object objectToSerialize, XmlSerializationWriter writer) in :line 0

在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,对象 o,XmlSerializerNamespaces 命名空间,字符串 encodingStyle,字符串 id)

在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,对象 o,XmlSerializerNamespaces 命名空间,字符串 encodingStyle,字符串 id)

在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,对象 o,XmlSerializerNamespaces 命名空间,字符串 encodingStyle)

在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,对象 o,XmlSerializerNamespaces 命名空间)

在 DD4T.Templates.Base.BaseComponentTemplate.Transform(Engine engine, Package package) 在 D:\DW-Source\Mainline\Src\DD4T\DD4T.Templates.Base\BaseComponentTemplate.cs:line 88

在 Tridion.ContentManager.Templating.Assembly.AssemblyMediator.Transform(引擎引擎,模板模板,包包)

在 Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.RunTemplate(引擎引擎,包包,字符串 templateUri,字符串类名)

在 Tridion.Templating.CSharpTemplate.CSharpSourceTemplate.Transform(引擎 __engine,包 __package)

在 Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.Transform(引擎引擎,模板模板,包包)

在 Tridion.ContentManager.Templating.Engine.ExecuteTemplate(模板模板,包包)

4

1 回答 1

2

Quirijn 的回答对您有帮助吗?https://groups.google.com/d/msg/dynamic-delivery-4-tridion/K0BzzPovUz4/1RvTHFHktukJ

此外,如果您有多个发布者,请确保将 DD4T.Templates.Base.dll 添加到所有发布者的 GAC。(如果您选择了 Q 答案的选项 2)

于 2013-01-09T13:19:07.930 回答