我们从源代码管理重新构建了DD4T TBB,并使用TCMUploadAssembly.exe将它们部署到tridion中。
我们创建了一个包含多媒体链接字段、组件链接字段和文本字段的简单组件,并填充了这些值。然后创建一个包含生成动态组件的CT,发布组件TBB的二进制文件,并尝试发布一个DCP。
我们能够在模板生成器中针对组件运行CT,并获得预期的输出,即格式化良好的序列化组件XML输出。
但是,在发布时,我们会得到一个序列化错误。(见下文)。此错误发生在代码试图序列化任何组件字段(文本/多媒体/组件链接等)时。
我们无法找出根本原因。尝试远程调试代码,即使在序列化我们所面临的组件对象时,所有dynamic.component对象属性都已正确设置。甚至尝试重新启动COM +、publisher服务,但问题仍然存在。任何指点都是非常感谢的。
无法找到为什么代码在模板构建器中正确运行,没有序列化错误,但在发布时失败,导致以下错误。
以下是错误消息:
生成XML文档时出错。 生成XML文档时出错。 对象引用未设置为对象的实例。 组件:模板 错误代码:0 用户: NORD\DWTMTSUser StackTrace信息详细信息: 在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.XSArrayInfo.get_Item(Object a,Int32 i) 在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.Write13_Field(String n,字符串ns,对象o,布尔isNullable,布尔needType) 在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterField.Write14_Field(Object o) 在System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,对象o,XmlSerializerNamespaces名称空间,字符串encodingStyle,字符串id) 在System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o) 在DD4T.ContentModel.SerializableDictionary`3.WriteXml(XmlWriter作家( 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处,字符串ns,组件o,布尔isNullable,布尔needType)在第0行 (在Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write32_Component(Object o)中:第0行 (在Microsoft.Xml.Serialization.GeneratedAssembly.ComponentSerializer.Serialize(Object objectToSerialize,XmlSerializationWriter编写器)中:第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,Object o,XmlSerializerNamespaces名称空间,String encodingStyle) 在System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,Object o,XmlSerializerNamespaces名称空间) 在DD4T.Templates.Base.BaseComponentTemplate.Transform(Engine引擎上,包装包装)在D:\DW-Source\Mainline\Src\DD4T\DD4T.Templates.Base\BaseComponentTemplate.cs:line 88中 在Tridion.ContentManager.Templating.Assembly.AssemblyMediator.Transform(Engine引擎,模板,包包) 在Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.RunTemplate(Engine引擎,包包,字符串templateUri,字符串className) 在Tridion.Templating.CSharpTemplate.CSharpSourceTemplate.Transform(Engine __engine,Package __package) 在Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.Transform(Engine引擎,模板,包包) 在Tridion.ContentManager.Templating.Engine.ExecuteTemplate(Template模板,包包)
发布于 2013-01-09 13:19:07
奎里恩的回答对你有帮助吗?https://groups.google.com/d/msg/dynamic-delivery-4-tridion/K0BzzPovUz4/1RvTHFHktukJ
此外,如果有多个发布者,请确保将DD4T.Templates.Base.dll添加到所有发布者的GAC中。(如果你选择了Q答案的选项2)
https://stackoverflow.com/questions/14231975
复制相似问题