Archivo de la categoría: SharePoint 2007

SharePoint 2007

Escribir en ULS con SharePoint 2010

SharePoint 2007/20010 dispone de un sistema de logs/trazar llamado Unified Logging System (ULS). Si quieres mas información sobre ULS puedes consultar este artículo de Microsoft: Introducción al registro del sistema de creación de registros unificado (ULS).

Cuando implementamos una aplicación sobre esta plataforma, es muy conveniente, registrar cualquier excepción al ULS para un futuro análisis, que nos permita evaluar y corregir el problema.

En SharePoint 2010 se implementa la clase SPDiagnosticsServiceBase, con la que podemos acceder de una forma mas cómoda que en versiones anteriores a este tipo de información, ya que cuenta con los métodos WriteEvent y WriteTrace, para ello.

El siguiente codigo muestra un ejemplo de como escribir en ULS volcando la información de una excepción capturada:

try
{
    var i = 0;
    var a = 2 / i;
}
catch (Exception ex)
{
    SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Mi Categoria", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, ex.Message, ex.StackTrace);
}

En el caso que queramos volcar información al ULS sin necesidad de estar dentro de un “catch” puedes usar esto:

SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("Mi Categoria", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, "Mi descripcion del error", string.Empty);

Por ultimo, existe una herramienta de Microsoft, para visualizar estos archivos de logs, llamada ULS Viewer, que puedes descargar de forma gratuita desde aquí.

 

Como establecer el administrador primario y secundario de una colección de sitios

Esta es la forma de establecer a través de código el administrador primario y secundario de una coleccion de sitios en SharePoint 2010. Para ello vamos a usar las propiedades SPSite.Owner y SPSite.SecondaryContact. Esta es un funcion de ejemplo que puede mejorarse verificando si los usuarios vienen vacios, o si el objeto SPSite es nulo… pero espero que os sirva a modo plantilla sobre la que partir. He decidido pasarle como parámetro el objeto SPSite, ya que asi puede ser llamada, por ejemplo, desde un WebPart de administración como desde la activación de una característica:

private bool SetAdministrators(SPSite site, string admPrimary, string admSecondary)
{
  bool result = false;
  try
  {
      SPUser PrimaryUser = site.RootWeb.EnsureUser(admPrimary);
      SPUser SecondaryUser = site.RootWeb.EnsureUser(admSecondary);
      site.Owner = PrimaryUser; //asigna el administrador primario
      site.SecondaryContact = SecondaryUser; //asigna el administrador secundario
      result = true;
  }
  catch (Exception) { }
  return result;
}

Excluir cuentas de usuario deshabilitadas del User Profile de SPS 2010

En el caso de enriquecer el Perfil de Usuario de SharePoint 2010 a través del WAD (Windows Active Directory) una funcionalidad casi obligatoria demandada por los clientes, es que todos los usuarios que estén deshabilitados en el WAD, no se propaguen al servicio de User Profile…

Con versiones anteriores de SharePoint, habia que crear un filtro en LDAP controlando la propiedad userAccountControl, y en la versión 2010 sigue siendo necesario crear un filtro, para ellos hay que seguir los pasos:

  1. En la página Administrar el servicio de perfil, haga clic en Configurar conexiones de sincronización.
  2. En la página Conexiones de sincronización, haga clic en la conexión de Active Directory que desee modificar y, a continuación, haga clic en Modificar filtros de conexión.
  3. En la página Editar filtros de conexión, siga estos pasos:
    1. En Filtro de exclusión de usuarios, cambie el atributo desplegable userAccountControl.
    2. En Filtro de exclusión de usuarios, cambie el operador de lista desplegable de bits en es igual a.
    3. En el Filtro de exclusión de usuarios, seleccione cuadro Tipo de filtro a 2.
    4. Haga clic en Agregar.
  4. Haga clic en Aceptar.

 

Referencia: How to import user profile information of enabled user accounts from Active Directory to SharePoint

Si queires conocer los atributos del UserAccountControl, puedes hacerlo aquí.

Como obtener la version de SharePoint 2010

Un tema necesario, para comprobar​ que todos tus entornos tienen el mismo nivel de parches (por lo tanto la misma version de SharePoint) se puede realziar de dos formas…

  • Una primera, al igual que ocurría en SharePoint 2007 es desde linea de comandos, esta vez con PowerShell utilizando el siguiente comando:
    get-spfarm | select BuildVersion

     

  • Otra opción es la siguiente, via web: Central Administration -> Upgrade and Migration -> Check product and patch installation status

Eliminar WebPart erroneo de una pagina

Si has añadido un WebPart a una pagina, y este lanza ua excepcion no controlada, ASP.NET te devuelve una pagina de error donde poco puedes hacer. Como eliminar el WebPart de la galeria no resuelve nada, la opcion es añadir el siguiente parametro a la pagina que produce el error: Contents=1 para poder eliminarlo.

Ejemplo: http://sharepoint/webpart.aspx?contents=1

Esto vale tanto para SharePoint 2007 como 2010…

Archivos flash (.swf) y SharePoint 2010

Después de migrar múltiples sitios de colaboración de MOSS 2007 a SPS 2010, me he topado con un error a la hora de visualizar archivos flash. Tras una investigación inicial de como era posible habilitar la visualización de este tipo de contenido, di con la solución: dentro de la Administración Central, modificar la configuración del WebApplication en cuestión, para poner en modo “permisivo”, el “manejo de archivos del explorador”. Para ello habria que seguir los siguientes pasos:

Administración de SharePoint 2010 –> Managment Web Aplication –> General Settings –> Browser File Handling –> Permisisve

Mas información sobre esta propiedad (PWebApplication.BrowserFileHandling) aqui.

SharePoint Guidance 2010 Hands On Lab

Hace algo mas de una semana, ha visto la luz SharePoint Guidance 2010 Hands On Lab, gracias al equipo de patterns & practices  de Microsoft, que es un proyecto de CodePlex que contiene un conjunto de seis laboratorios: uno para logging, uno para service location y cuatro para application setting manager.

La realización de cada laboratorio lleva unos 20 minutos su realización, y viene totalmente definido en un archivo PDF (uno por cada lab) donde se detallan todos los pasos para la creación, ejecución y despliegue de estos.

Puedes descargarte los laboratorios desde aquí.

Desplegar aplicaciones con PowerShell en SharePoint 2010

Micosoft Office SharePoint Server 2007 incluye una herramienta para administrar servidores y sitios por linea de comando llamada stsadm. La nueva versión de la plataforma, a parte de seguir incorporando esta herramienta, implementa comandos por PowerShell para realizar las mismas funciones que se hacían anteriormente.

Una de las funciones mas habituales que se realizan con estas herramientas a nivel de administración, es el despliegue de soluciones en los diferentes entornos de SharePoint (desarrollo, integración, pre-producción, producción…).

Microsoft recomienda usar PowerShell en vez de stsadm para la versión 2010 de SharePoint, así que voy a intentar replicar en esta nueva herramienta, lo que estábamos acostumbrados a realizar antes. Contando que tenemos una solución que hemos implementado y queremos desplegar en un entorno, llamada: MiSolucion.wsp, lo que hacíamos era algo similar a esto:

REM Instala una solución a nivel de WebApplication
stsadm –o addsolution –filename “C:MiSolucion.wsp”
stsadm –o deploysolution –name MiSolucion.wsp –url http://miwebappp –allowgacdeployment –immediate
REM Actualiza una solución previamente instalada
stsadm –o upgradesolution –name MiSolucion.wsp –filename “C:MiSolucion.wsp” -immediate
REM Desactiva y borra la solución
stsadm –o retractsolution –name MiSolucion.wsp –url http://miwebappp –immediate
stsadm –o deletesolution –name MiSolucion.wsp

Con PowerShell para hacer lo mismo deberíamos escribir:

#Instala una solución a nivel de WebApplication
Add-SPSolution “C:MiSolucion.wsp”
Install-SPSolution –Identity MiSolucion.wsp –WebApplication http://miwebappp –GACDeployment
#Actualiza una solución previamente instalada
Update-SPSolution –Identity MiSolucion.wsp –LiteralPath “C:MiSolucion.wsp” –GacDeployment
#Desactiva y borra la solución
Uninstall-SPSolution –Identity MiSolucion.wsp –WebApplication http://miwebappp
Remove-SPSolution–Identity MiSolucion.wsp
Para actualizar una solucion ya existente, lo mas facil y sencillo es utilizar (con PowerShell) unicamente el comando: Update-SPSolution, sin desinstalar previamente esta.
Para mas información sobre PowerShell puedes comprobarlo aquí.

Reducir el tamaño del fichero de log en SQL Server 2005

Hoy me ha tocado realizar tareas de mantenimiento en uno de los servidores de desarrollo, y he visto que gran parte del espacio en disco se lo estaba comiendo uno de los ficheros de una base de datos SQL Server de una aplicación de SharePoint.

Para los que no tengan muy claro, como almacena SQL Server las bases de datos, decir que hay al menos dos ficheros por base de datos. Uno de estos ficheros es donde estarán almacenados los datos de nuestras tablas, vistas y demás objetos (el cual tiene extensión *.mdf)… y el otro es el fichero de transacciones (el cual tiene extensión *.ldf). El fichero de transacciones consiste en una serie de registros de todas las modificaciones de la base de datos y de la transacción que ha realizado cada modificación. En el registro de transacciones figura el inicio de cada transacción. También registra los cambios de los datos y facilita suficiente información para deshacer las modificaciones (si fuera necesario posteriormente) realizadas durante cada transacción.

Como os podeis imaginar, el archivo *.ldf o de transacciones puede ocupar un tamaño considerable, por lo que a veces, nos interesa reducirlo o truncarlo. Si no nos interesa realizar una copia previa de este archivo, lo mas rápido es ejecutar una consulta SQL, para ello, abrimos el analizador de consultas e introducimos esta query:

USE MiBase
CHECKPOINT
EXEC sp_addumpdevice 'disk', 'CopiaMiBase', 'd:LogMiBase.bak'
BACKUP DATABASE MiBase TO CopiaMiBase
BACKUP LOG MiBase WITH TRUNCATE_ONLY
DBCC SHRINKFILE (MiBase_Log, 100)
Hay que sustituir MiBase por el nombre de la base de datos en la que queramos reducir el archivo de transacciones. Existe un paramento que podemos modificar a nuestro gusto, que es el tamaño del archivo *.ldf, actualmente establecido a 100 (en megabytes, expresado como un número entero). Aquí tenéis más información sobre la instruccion DBCC SHRINKFILE y sus parámetros.

ASP.NET mantener la posición del scroll después de un postback

aspnetEn paginas web con mucho contenido vertical, hace que estas sean muy largas, y al hacer un postback, el scroll se ha situado al principio de esta. Esto se convierte en un engorro para el usuario, lo que resta navegabilidad y usabilidad a la pagina.

La idea es poder dejar la pagina en la misma posición de scroll, cuando el usuario haga un postback. Para conseguirlo, se pueden usar tres métodos, uno global de la aplicación Web y el resto específico a cada página:

  • En el archivo de configuración web.config, ubique la sección <pages> y agregue el siguiente atributo estableciendo a su valor a “true”:
    maintainScrollPositionOnPostBack="true"

    Lo anterior mantendrá la posición del scroll para todas las páginas web de sitio.

  • En la declaración a nivel de página (@Page), agregue el atributo homólogo al anterior con el mismo valor:
    <%@ Page MaintainScrollPositionOnPostback="true" %>

    Con esto se mantiene la posición del scroll únicamente para la página en cuestión.

  • Si se requiere realizarlo mediante código, se puede utilizar:
    System.Web.UI.Page.MaintainScrollPositionOnPostBack = true;

    Lo cual es equivalente a realizarlo en la declaración a nivel de página.