2012-09-27 11 views
7

I Got excepción = { "No se puede encontrar UUID: 5708986b-390F-4728-b0c7-b49bd3d8f407:. Metadatos"}Tridion CoreService crear metadatos de componente faltante

schemaId = UpdatePubId(schemaId, containerId); 
SchemaData schemaData = (SchemaData)client.Read(schemaId, null); 
string xml = string.Format("<{0} xmlns=\"{1}\">{2}</{0}>", schemaData.RootElementName, schemaData.NamespaceUri, fields); 

ComponentData componentData = new ComponentData 
{ 
    Content = xml, 
    ComponentType = ComponentType.Normal, 
    Title = title, 
    Schema = new LinkToSchemaData { IdRef = schemaId }, 
    LocationInfo = new LocationInfo { OrganizationalItem = new LinkToOrganizationalItemData { IdRef = containerId } }, 
    Id = "tcm:0-0-0", 
    MetadataSchema = schemaData.MetadataSchema, 
    Metadata = schemaData.Metadata 
}; 

try 
{ 
    componentData = client.Save(componentData, new ReadOptions()) as ComponentData; 
    componentData = client.CheckIn(componentData.Id, new ReadOptions()) as ComponentData; 
    message.Set("Component", title + ", successfully"); 
} 
catch (Exception exception) 
{ 
    message.Set("Component", exception.Message); 
} 

gracias expertos Tridion

Respuesta

12

Está en la ruta correcta, pero el error indica que no ha proporcionado los campos de metadatos para el componente que está intentando crear.

Esta línea es incorrecta:

Metadata = schemaData.Metadata 

Se debe más o menos, al igual que uno en el que crear los campos de contenido:

Metadata = String.Format("<Metadata xmlns=\"{0}\">{1}</Metadata>",schemaData.NamespaceUri, "YOUR METADATA XML") 
+0

sí gracias Puntero esto es correcto, la forma de retrive metadatos del esquema gracias de nuevo :) – Lucas

+1

Si la respuesta es correcta, deberías aceptarla;) –

+0

me aparece otro error El formateador arrojó una excepción al intentar deserializar el mensaje: Hubo un error al intentar deserializar el parámetro http: //www.sdltridion .com/ContentMan ager/CoreService/2011: deltaData. El mensaje InnerException era 'Hubo un error deserializando el objeto de tipo Tridion.ContentManager.Data.IdentifiableObjectData. El nombre no puede comenzar con el carácter '<', valor hexadecimal 0x3C. Línea 1, posición 109. '. Por favor, consulte InnerException para más detalles. – Lucas

Cuestiones relacionadas