jueves, 29 de julio de 2010

Bichito en el control TaxonomyPicker.ascx

Hoy he encontrado una cosa muy interesante en el control TaxonomyPicker.ascx cuando estaba tratando un asunto que, en principio, no tenía nada que ver. El caso es que tengo un portal de publicación en el cual quería crear una serie de variaciones de sitio para diferentes idiomas y, como es habitual en estos casos, instalé los paquetes de idioma necesarios, adapté mi definición de sitio y lancé mi despliegue. Todo parecía funcionar bien: los sitios se habían creado y se habían traducido correctamente según los archivos de recurso. Sin embargo, una acción tan simple como acceder a la configuración del sitio hizo que me cambiara la cara.

La típica pantalla de error inesperado indicaba que algo no iba bien, y deshabilitar los errores personalizados tampoco arrojaba demasiada luz al asunto. Al final, la pista estaba en el visor de sucesos:

“Échec du chargement du fichier du modèle de contrôle /_controltemplates/TaxonomyPicker.ascx  : Could not load type 'Microsoft.SharePoint.Portal.WebControls.TaxonomyPicker' from assembly 'Microsoft.SharePoint.Portal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'.”

Como se puede apreciar por el mensaje el sitio que había creado era en francés y, aunque no conozco demasiado de ese idioma, el error parecía bastante indicativo de que algo pasaba en el control TaxonomyPicker. El error me parecía extraño en sí, pero más extraño me pareció lo que vi al abrir el fichero:

<%@ Control className="TaxonomyPickerControl" Language="C#" Inherits="Microsoft.SharePoint.Portal.WebControls.TaxonomyPicker&#44;Microsoft.SharePoint.Portal,Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

De alguna manera, lo que debería ser una coma estaba siendo en realidad la cadena “&#44;”. Aunque no es una buena práctica modificar un fichero estándar de SharePoint, sólo por probar hice el cambio de la cadena por la coma y automáticamente el problema se solucionó.

A partir de aquí se me plantean diferentes preguntas:

  • ¿Dejo este cambio en el servidor desobedeciendo las indicaciones de Microsoft?
  • ¿Habrá más ficheros con este problema?
  • ¿Habré roto alguna otra cosa al hacer este cambio?
  • ¿Por qué me ha funcionado todo correctamente cuando creo sitios usando el idioma en el que he instalado SharePoint?

En fin, todavía no tengo respuesta a ninguna de estas preguntas salvo a la primera: de momento se queda así mientras no encuentre algo mejor. En cualquier caso, si encuentro alguna otra respuesta os informaré al respecto.

Actualización (30-07-2010)

Al parecer ese control no se utiliza desde que apareció la versión RTM y el error se produce, básicamente, porque el sistema intenta compilar todos los ASCX de la carpeta CONTROLTEMPLATES cada vez que los pool de aplicaciones se reinician. Si el error en el visor de sucesos os molesta, basta con que guardéis el fichero con otra extensión (TemplatePicker.ascx.roto) y dejará de compilarse :)

0 comentarios: