2010-12-07 10 views
5

A veces Sitecore no devolverá ciertos elementos. Por ejemplo, en el siguiente código:Los elementos son nulos en Sitecore 6

Sitecore.Data.ID itemId = new Sitecore.Data.ID(id); 
Sitecore.Context.Database.GetItem(id); 

Esto devolverá un valor nulo, sin embargo, si el mismo ID de cadena se coloca en la búsqueda por encima del árbol de contenido en el editor de contenido, devolverá el artículo! La base de datos de contexto es web y he vuelto a publicar el elemento varias veces.

Estoy usando Sitecore 6.2.0 (rev 100701).

+0

Devolví la pregunta, ya que se había actualizado para reflejar la respuesta, por lo que ya no tenía sentido. –

Respuesta

5

¿Estás seguro de que no es un error tipográfico? Quiero decir, ¿no debería pasar itemId en lugar de solo id a GetItem?

No recuerdo exactamente cómo funciona, pero si pasa una cadena a este método, probablemente lo trate como ruta, no como ID, e intenta resolver el elemento por ruta. Puede comprobar esto mucho más rápido de lo que hago:

Sitecore.Data.ID itemId = new Sitecore.Data.ID(id); 
Sitecore.Context.Database.GetItem(itemId); 
+0

sí, estoy seguro, disculpe mi error debido a la copia apresurada, estoy usando alguna función de utilidad: public static Sitecore.Data.Items.Item GetItemById (ID Sitecore.Data.ID) { return Sitecore.Context.Database.GetItem (carné de identidad); } – lurscher

+0

Probablemente, ¿el artículo aún no está en la base de datos web? Podría tener restricciones de publicación o no haber pasado el flujo de trabajo ... Intente simplemente "seleccionar * de elementos donde ID = 'SU GUID-AQUÍ'" contra DB web para asegurarse de que –

+1

bien descubrí cuál es la causa ... parece que no le gusta el sitio cuando el usuario del sitio del contexto es extranet/anonymous. Me conecto como un usuario normal y funciona ... – lurscher

5

yo sólo tenían el mismo problema - GetItem() función devuelve NULL

Después de tirar el pelo durante aproximadamente una hora, me encontré con que mi función GetItem() es llamado por la interfaz y el usuario extranet/Anonymous no tienen acceso de lectura al elemento que intento obtener.

Por lo tanto, ¡recuerde verificar la seguridad!

Cuestiones relacionadas