在Tridion Templating类中创建多媒体组件

Tem*_*cer 5 tridion

我正在尝试使用以下代码在Tridion模板类中创建多媒体组件.

MemoryStream stringInMemoryStream = new MemoryStream(ASCIIEncoding.Default.GetBytes("
<test>testing</test>"));                            
Component xmlMultimediaComponent = new Component(engine.GetSession(), new 
  TcmUri("tcm:21-2008-2"));                
xmlMultimediaComponent.Title = "New MM component";
xmlMultimediaComponent.Schema = new Schema(new TcmUri("tcm:10-6532-8"), 
 engine.GetSession());                
xmlMultimediaComponent.BinaryContent.MultimediaType = new MultimediaType(new 
   TcmUri("tcm:0-36-65544"), engine.GetSession());                                         
xmlMultimediaComponent.BinaryContent.MultimediaType.MimeType = "application/xml";
xmlMultimediaComponent.BinaryContent.MultimediaType.FileExtensions = new List<string> 
   {"xml", "XML"};
xmlMultimediaComponent.BinaryContent.UploadFromStream = stringInMemoryStream;
xmlMultimediaComponent.BinaryContent.Filename = "testing.xml".ToLower();                                    
xmlMultimediaComponent.Save();                
xmlMultimediaComponent.CheckIn(true);
Run Code Online (Sandbox Code Playgroud)

请注意,"tcm:21-2008-2"是必须创建组件的文件夹TCM ID."tcm:10-6532-8"是多媒体模式ID,"tcm:0-36-65544"是多媒体类型ID.

然而,似乎有一些问题,它失败了以下错误:

链接到Schema具有无效值.在Tridion.ContentManager.Utilities.ThrowInvalidLinkException(链路链接,KernelException的InnerException)在Tridion.ContentManager.IdentifiableObject.AssertValidLink(链路链接)在Tridion.ContentManager.IdentifiableObject.AssertValidLinks(IEnumerable`1链接)在Tridion.ContentManager.IdentifiableObject.AssertValidLinks( )Tridion.ContentManager.ContentManager.OnSaving(SaveEventArgs eventArgs)位于Tridion.ContentManager.ContentManager.ContentManager上的Tridion.ContentManager.ContentManagement.VersionedItem.OnSaving(SaveEventArgs eventArgs)中的Tridion.ContentManager.IdentifiableObject.OnSaving(SaveEventArgs eventArgs)处于Tridion.ContentManager.OnSaving(SaveEventArgs eventArgs).在Tridion.ContentManager.IdentifiableObject.Save(SaveEventArgs EventArgs的)在Tridion.ContentManager.ContentManagement.VersionedItem.Save(布尔checkInAfterSave)在Tridion.ContentManager.ContentManagement.VersionedItem.Save OnSaving(SaveEventArgs EventArgs的)()

上述错误发生在以下声明中xmlMultimediaComponent.Save().

任何想法我们如何将LinkToMultimedia类型模式ID传递给多媒体组件?

joh*_*ter 11

我认为架构ID必须包含上下文发布ID,所以在这种情况下10-6532-8应该是21-6532-8.

谢谢

  • 是的,你_always_必须使用相同的上下文. (3认同)