aelena.com

23 March 2008

Sutilezas del modelo de objetos de MOSS

Filed under: MOSS 2007 — admin @ 20:08

Cuando queremos acceder al modelo de objetos de MOSS desde el código de una aplicación web, ya sabemos que tenemos objetos como SPContext, que nos permiten hacer llamadas como las siguientes para movernos por nuestros sitios o colecciones de sitios:

SPSite oSiteCollection = SPContext.Current.Site;

SPWeb oWebSite = SPContext.Current.Web;

o también desde una página o webpart:

SPWeb oWebSite = SPControl.GetContextWeb(this.Page.Context);

La cosa es que sobre las referencias que obtengamos mediante estas llamadas, no debemos llamar los métodos Close() ni Dispose() ya que Microsoft nos advierte de que el comportamiento podría ser impredecible.

Lo que conviene recordar es que cuando usemos el indexador

SPWeb oWebSite = SPContext.Current.Site.AllWebs[”miSitio”];

el objeto de tipo SPWeb resultante sí debe ser eliminado correctamente. Son cosas que conviene tener en cuenta para que nuestra aplicación no sufra de errores extraños o problemas considerables de rendimiento en el futuro.

Sobre SPContext una nota, y es que no espereis que funcione en un WorkFlow de MOSS.

12 March 2008

Error Inesperado en MOSS

Filed under: MOSS 2007 — admin @ 8:42

Todos los que trabajan con SharePoint conocen perfectamente la propensión de la herramienta de sacar mensajes de error inesperado, sin dar más información. En ocasiones, sin dejar nada en el log de eventos de la máquina y tampoco en los propios logs de texto. Cuando ocurre esto, es una ruina ponerse a buscar el origen del error, sobre todo si estamos desarrollando una webpart compleja y tenemos que ponernos a comentar codigo hasta arrinconar al culpable.

Afortunadamente, hay una solución, modificando el web.config la linea siguiente y cambiando el valor del atributo CallStack a “true”:


<SafeMode MaxControls="200" CallStack="false"…

por

<SafeMode MaxControls="200" CallStack="true"…

Y finalmente, cambiar el elemento customErrors poniendo su atributo mode a “Off”:

<customErrors mode="Off"/>

Así conseguiremos que nos salga la “pantalla amarilla” de asp.net con la información del error que nos apuntará en la dirección correcta y nos facilitará la vida mucho más.

¡No olvideis luego quitarlo antes de pasar a producción!

code on!!!