Dynamic 使用DD4T TBB';发布内容时出现序列化错误;s

Dynamic 使用DD4T TBB';发布内容时出现序列化错误;s,dynamic,tridion,tridion-2011,tridion2009,dd4t,Dynamic,Tridion,Tridion 2011,Tridion2009,Dd4t,我们从源代码管理中重建了DD4T TBB,并使用TCMUploadAssembly.exe将其部署到tridion 我们创建了一个包含多媒体链接字段、组件链接字段和文本字段的简单组件,并填充了值。然后用[Generate dynamic component,Publish Binary for component]TBB创建了一个CT,并尝试发布一个DCP 我们能够在TemplateBuilder中针对组件运行CT,并获得预期的输出[即格式良好的序列化组件XML输出] 但是,发布时会出现序列化错

我们从源代码管理中重建了DD4T TBB,并使用TCMUploadAssembly.exe将其部署到tridion

我们创建了一个包含多媒体链接字段、组件链接字段和文本字段的简单组件,并填充了值。然后用[Generate dynamic component,Publish Binary for component]TBB创建了一个CT,并尝试发布一个DCP

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

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

我们无法确定根本原因。尝试远程调试代码,即使在序列化组件对象时正确设置了所有dynamic.component对象属性,但我们面临此问题。即使尝试重新启动COM+,发布服务器服务,但问题仍然存在。非常感谢您的指点

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

以下是错误消息:

生成XML文档时出错

生成XML文档时出错

对象引用未设置为对象的实例

组件:模板

错误代码:0

用户:NORD\DWTMTSUser

StackTrace信息详细信息:

位于Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.XSArrayInfo.get_项(对象a,Int32 i)

在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.Write13_字段(字符串n、字符串ns、对象o、布尔值isNullable、布尔值needType)

位于Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.Write14_字段(对象o)

位于System.Xml.Serialization.XmlSerializer.Serialization(XmlWriter XmlWriter,对象o,XmlSerializerNamespaces名称空间,字符串编码样式,字符串id)

位于System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter XmlWriter,对象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,字符串名称,字符串ns,布尔值isNullable,布尔值包装)

在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write13_组件(字符串n、字符串ns、组件o、布尔值可为空、布尔值需要类型)的第0行

在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write32_组件(对象o)中:第0行

在Microsoft.Xml.Serialization.GenerateAssembly.ComponentSerializer.Serialization(对象objectToSerialize,XmlSerializationWriter-writer)的第0行

位于System.Xml.Serialization.XmlSerializer.Serialization(XmlWriter XmlWriter,对象o,XmlSerializerNamespaces名称空间,字符串编码样式,字符串id)

位于System.Xml.Serialization.XmlSerializer.Serialization(XmlWriter XmlWriter,对象o,XmlSerializerNamespaces名称空间,字符串编码样式,字符串id)

在System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter XmlWriter,对象o,XmlSerializerNamespaces,字符串编码样式)

位于System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter XmlWriter,对象o,XmlSerializerNamespaces)

在D:\DW Source\Mainline\Src\DD4T\DD4T.Templates.Base\BaseComponentTemplate.cs中的DD4T.Templates.Base.BaseComponentTemplate.Transform(引擎引擎,包)处

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

位于Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.RunTemplate(引擎引擎、包包包、字符串模板URI、字符串类名称)

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

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

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


奎林的回答对你有帮助吗

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

DD4T dll(DD4T.ContentModel.Contracts.dll、DD4T.ContentModel.dll、DD4T.ContentModel.XmlSerializers.dll)的添加和DD4T.Templates.dll的上传已经完成!!!上载ILMerged DD4T.Templates.merged.dll在发布时仍引发序列化错误。我们正在为同样的问题找出解决办法。非常感谢您的帮助:)