viernes, 17 de septiembre de 2010

Error en el elemento Web luego de varias actualizaciones en SharePoint

Pueda que este erro le suceda.

Síntoma:

Ha estado actualizando varias soluciones de elementos web y de repente  una de ellas muestra un error en el elemento Web  dentro de la página.  Lo intenta eliminar y agregar de la página y aún mas extraño le indica que no esta registrado como SafeControl. Y esta utilizando WSPBuilder y no le reporta ningún error en la interface de usuario o en Visual Studio.

 

Solución:

Si revisa los ULS de SharePoint encontrará el siguiente error que le dará una pista correcta:

Solution Deployment : Error occurred for solution infoware.portal.minuta.wsp - Error: el archivo web.config no es válido en este sitio Web de IIS: C:\Inetpub\wwwroot\wss\VirtualDirectories\8572\web.config.

Y por cada aplicación Web le muestra el mismo error.  Si revisa el Web.Config de las aplicaciones mencionadas se dará cuenta que no son legibles, y es porque se han dañado los web.config.  Si revisa el Web.Config de donde si lo estaba actualizando posiblemente encontrará que efectivamente no esta registrado el elemento Web como SafeControl y eso es porque la hacer el deployment se interrumpió y no pudo finalizar con éxito la actualización.

SharePoint guarda copias automáticamente que este archivo de configuración y lo hace por fechas como se muestra abajo en la imagen:

image

Ordénelos por fecha y restaure el mas reciente que sea legible y no muestre mas error.

Luego actualice de nuevo la solución y con ello deberá seguir trabajando como lo estaba haciendo.

Espero le sirva de ayuda, Fix4Fun!,

Manolo Herrera

lunes, 6 de septiembre de 2010

Creando dos características de distinto alcance en una sola solución en SharePoint

Dentro de una misma solución podemos crear varias características con distinto alcance y una dependiente de la otra.  En este ejemplo demostraré cómo podemos crear una característica a nivel de Colección de Sitios y una a nivel de Sitio la cual estará relacionada o dependiente de la otra.

Además podremos observar algunas tareas que pueden automatizarse al momento de activar cada una de ellas.

Para la construcción de la solución utilizo WSPBuilder que es un producto que podemos instalar de forma gratuita y que ha probado ser la mejor solución de 3eros para crear soluciones en SharePoint 2007 y que se acopla muy bien a Visual Studio (2008 en mi caso). 

No detallaré como crear una solución con WSPBuilder, he escrito otros artículos y hay suficiente documentación en la red sobre esto.  Quiero ir al punto importante sobre este ejemplo que es cómo crear estas características y relacionarlas.

Lo que si debo de mencionar es el breve procedimiento para iniciar:

1) Cree una solución en blanco.

2) Luego cree un proyecto WSPBuilder como muestra la imagen de abajo:

image

3) Cree un Elemento Web con Característica con la plantilla de WSPBuilder:

image

Luego le mostrará una ventana de dialogo: donde lo importante será definir el Scope o Alcance.  Para los elementos Web deberá seleccionar Site (Site Collection) ya que la galería esta a nivel de la colección de sitios y allí es donde almacena.

image

Esto creará las bases para iniciar mas fácilmente la creación de la solución.

Esto creará 3 archivos:

image

el archivo feature.xml; tiene la definición de la característica

elements; asocia el elemento web con la característica.

.webpart; la definición del elemento web a nivel de artefacto de SharePoint.

Si observa tiene la estructura donde depositará estos archivos, al momento de su instalación.  12 representa la siguiente ruta: %progam files%\common files\microsoft shared\web server extensions\12.

Además nos crea un directorio WebPartCode y un archivo donde esta el código del elemento Web

image

Ahora lo que vamos hacer es crear una estructura de directorios bajo el directorio Feature para separar cada feature con el alcance deseado  de tal forma que queda de la siguiente forma:

image

Cómo lo hice solo cree un nuevo directorio con el sufijo Web copie el archivo feature y renombre el otro agregando el sufijo Site para visualmente distinguir el alcance de cada uno.  Pero no se engañe el que indica esto a SharePoint es la definición xml que se encuentra dentro del archivo feature.xml que vamos a modificar.

Antes de modificar la declaración xml del feature o característica abajo en la imagen de la declaración original:

image

La nueva declaración del featue para el directorio MenuReportesAdministradosSite sería de la siguiente forma:

image

Lo importante a mencionar son los atributos ReceiverAssembly y ReceiverClass donde el Assembly es el full Qualified Name de DLL del proyecto.  Utilice Reflector para ver el Full Qualified Name.  Y ReceiverClass es el nombre de la clase donde colocaremos el código de instalación al activar la feature como muestro abajo:

image

image

Ahora veamos el archivo feature.xml del directorio que representa el alcance Web Site..

image

El valor del atributo ReceiverAssembly se mantiene igual ya que es del mismo proyecto y por tanto tiene el mismo DLL, pero el de la clase hace referencia a otra clase donde nos permitirá escribir códigos al activar el feature a nivel de cada sitio o sub-sitio.

image

* El detalle del código mostrado en la imagen de arriba esta fuera del alcance de este articulo.

Entonces tendremos dos archivos de código uno por cada nivel de alcance (Site & Web).

image

En resumen vimos en este artículo como crear dos características dentro de una misma solución y como asociar código a cada feature, útil para entregar soluciones autoinstalables que creen toda la tubería necesaria para utilizar las features activadas.

Hasta la próxima, Feature4Fun!,

Manolo Herrera

miércoles, 25 de agosto de 2010

La opción Quiesce Farm no esta mas disponible en la Administración Central pero si en línea de comando en SharePoint 2010

Aunque algunos pongan en tela de duda la efectividad de esta opción, para aquellos que si la utilizan en SharePoint 2010 en la interfaz de Usuario del Central Administration no esta mas disponible, créame literalmente barrí con todas las opciones y no lo encontré por ninguna parte.

Pero no todo esta perdido dejaron disponible en línea de comando a través de la herramienta stsadm.exe como se hacia en SharePoint 2007.

Para ejecutar la herramienta deberá ejecutar modo línea de comando y luego ubicarse en la siguiente ruta: %program files%\common files\microsoft shared\web server extensions\14\bin

Allí ejecutar la siguiente línea:

stsadm -o quiescefarm  -maxduration 5

(Referencia del 2007: http://technet.microsoft.com/en-us/library/cc263384(office.12).aspx)

Esta línea indica que en 5 minutos ejecutará esta operación.

Para revisar el estatus del comando ejecutar la siguiente línea de comando:

stsadm –o quiescefarmstatus

Para desatibar esta operación ejecutar la siguiente línea de comando:

stsadm -o unquiescefarm

Si quiere indagar con mayor detalle lo que hace quiesce farm consulte: http://social.technet.microsoft.com/Forums/en-US/sharepointadmin/thread/69ca2d8e-81e7-46e5-bde4-1668c89aa3d5

Quiescing4Fun!,

Manolo Herrera

martes, 24 de agosto de 2010

No se encuentra disponible ningún servicio de base de datos de Access en el conjunto de servidores. [Usuario: SHAREPOINT\system]. (SharePoint 2010)

Este error puede ser causado por varias razones que entre ellas un olvido en la configuración de los servicios de Base de datos Access.

La solución se encuentra aquí:

http://technet.microsoft.com/en-us/library/ee924657.aspx

Básicamente se debe de revisa la configuración del servicio en la granja de servidores y en el grupo predeterminando  este habilitado el proxy de dicho servicio.

En la configuración del sistema, en administrar servidores en este conjunto de servidores, debe de revisar que el servicio este levantado o encendido.  

image

Seleccione la aplicación Web donde desea que el servicio este levantado y luego busque y verifique si esta iniciado sino inícielo.

image

Solving4Fun!,

Manolo Herrera

viernes, 13 de agosto de 2010

En SharePoint 2010 todos tienen un lugar especial; Como MS-Access Gurú

Ahora en SharePoint 2010 estrenamos las plantillas de bases de datos Web; que no son mas que soluciones desarrolladas en MS-Acces a través del nuevo servicio Access Service.

PlantillaBasesDatosAccess

image

Si seleccionamos Options la opción Settings nos muestra que esta diseñada en Access y los objetos de access existentes; como tablas, reportes, vistas, y fórmularios.

DesignWithAccess

Si seleccionamos la opción View All Site Content nos muestra la estructura del los objetos creados dentro del Sitio creado por medio de la Plantilla seleccionada.

SiteSettingsProyectos

En la imagen de arriba nos muestra una librería de Imágenes, una librería de Definición de Reportes, Listas de SharePoint utilizadas como fuente de datos en los reportes.  Aunque la imagen muestra una plantilla de proyectos no cambia en los tipos de documentos que tienen las otras plantillas únicamente los elementos y las estructuras de las listas que utiliza para desplegar los reportes. 

Imagenes

En la imagen de arriba se muestra el contenido de la biblioteca de imágenes típica de una plantilla de bases de datos Web.

ReportDefinitions

En la imagen de arriba muestra la biblioteca de Definición de Reportes, donde muestra la fuente de datos de Access y cada una de las definiciones de los reportes disponibles dentro de la solución.

AccessDataSource

La fuente de datos de Acces define el tipo que es Access Services (El nuevo servicio disponible en SharePoint 2010) y su autenticación es Windows.

Si consultamos el contenido de el sitio basado en una de estas plantillas de bases de datos Web podemos ver otro elemento que no se revela en la opción View All Content y es la página que despliega la solución de Access incrustada dentro de SharePoint.

CotenidoProjects

Si seleccionamos en Options la opción Open In Access podremos ver el contenido de la solución de Access.

OpenInAccess

 

BaseDatosProyectosAccess

Ups!, no luce también, pero ahora veamos como lucen cada una de las plantillas expuestas dentro de SharePoint:

El de activos fijos de la organízación o Assets; todos tiene ayuda, video de demostración (necesita acceso a internet para verlo).

Activos

NuevoActivo

Veamos el de Contactos:

Contactos

AddressBook

NuevoContacto

Registro de Problemas o Issues:

RastreoProblemas

NuevoProblema

Plantilla de Caridad o Charitable Contributions:

Caridad

Y por último el de proyectos:

 image

image

image

Y la sección de reportes visualmente elegantes y con la funionalidad de generarlo a pdf, excel, xml entre otros.

image

Ah por si no sabe como regresar al portal en Options tenemos la opción de Navigate Up, este no lleva al sitio superior inmediato.

image

Bueno en este artículo descubrimos las nuevas plantillas de bases de datos (MS-Access) Web que le dan una nueva dimensión a las soluciones desarrolladas en MS-Access que su atractivo es la portabilidad y luego ahora su exposición en la Web a través de SharePoint.

Descubriendo4Fun!,

Manolo Herrera

jueves, 5 de agosto de 2010

Síntesis de debe de tomar en cuenta cuando integra SQL Server Reporting Services 2008 con SharePoint 2010 cuando tiene mas de un servidor

Si solo tiene un servidor ni se moleste con leer este artículo, si tiene mas de uno es que ha tenido algún problema que no sabe como resolverlo, a continuación un resumen de lo que debe de tomar en cuenta.

Brevemente la diferencia entre instalarlo en un solo servidor y en dos o mas en la granja de servidores es que se debe de instalar los bits de SharePoint en el servidor de Reportes, y conectarlo a la granja de servidores.

Aunque este ejemplo es para SQL server 2008 R2 es valido el procedimiento para SQL Server 2005 y 2008.

Bueno iniciemos el procedimiento.

1) Reporting Services debe de estar configurado para integrarse con SharePoint para ello desde el momento de la instalación de Reporting Services puede indicarle que desea instalarlo Integrado a SharePoint, pueda que esto le ahorre un par de minutos, en adición no es necesario instalar IIS debido a que SQL Server 2008 tiene su propio Web Server incluido. Aunque mas adelante cuando nos toque instalar los requisitos previos de SharePoint instalará y configurará el IIS por nosotros.

2) Si seleccionó la opción antes o después deberá ya sea configurar o revisar la configuración como se describe a continuación:

En este paso debe de configurar la Reporting Services a través de la opción de menú en Windows ,Reporting Service Configuration.

image

Allí deberá como primera cosa Revisar el Web Service URL el predeterminado lo instala en el 80.

WebServiceURLRS2

Luego el usuario con que se autentica deberá ser el usuario con que instaló SharePoint 2010 y que tiene permisos sobre SQL Server 2008. No la cuenta de servicio, ojo con eso.

ServiceAccountRS

En la base de datos cree una nueva colóquele un nuevo nombre como WSS_Report_Server y dígale que no es nativo sino SharePoint Integrated.

ReportServerDatabase

Con ello revise el status en la primera pagina de información de la configuración y si ya le indica que el Modo es integrado, hizo las cosas bien y ya puede continuar con el proceso.

ReportServerStatus

3) Ahora lo que debe de hacer es instalar SharePoint 2010 sobre este servidor de Reportes. Primero los requisitos previos y luego SharePoint 2010 seleccionando las opciones de Avanzado y Granja de Servidores.

4) Luego levantará el asistente de configuración de Productos y Tecnologías de SharePoint y deberá indicarle que se desea conectar a una granja de servidores existentes, escriba el nombre del servidor de Base de datos de SharePoint (que para este ejemplo es el mismo), seleccione el archivo de configuración de SharePoint de la granja normalmente es WSS_Config. Y por ultimo seleccione la opción avanzada e indíquele que no desea que este servidor hospede la aplicación de administración Central. Cuando termine la configuración levantará la administración Central del servidor donde esta instalado.

5) Dentro de la Administración Central seleccione la opción Central Application Settings, y dentro de Reporting Services seleccione la opción Reporting Services Integration.

GeneralApplicationSettingsRS

6) Escriba en la opción Report Server Web Service URL la URL del Servidor de Reportes que configuramos en el servidor de Reportes o Base de Datos según el caso. Y luego seleccione la opción de Trusted Account, para que impresone y envie la identidad del usuario . Para finarlizar esta parte coloque el usuario y clave conque se configuró la cuenta para acceder el Report Server.

ReportingServicesIntegration

Si todo funcionó correctamente deberá mostrarle la siguiente página:

ReportingServicesIntegrationSummary

7) Add a Report Server to the Integration ingrese el nombre del sevidor de base de datos y luego escriba el usuario y clave con que se configuró la cuenta de servicio de Reporting Services

IntegrateAReportServer

8) Este paso solo lo haremos para evidenciar si hay algún error seleccione la opción Reporting Services Server Defaults, sino le muestra ningún error quiere decir que ya esta configurado todo correctamente, si le muestra un error revise el correlation id en los logs de SharePoint y este le indicará la razón del error.

ReportingServicesServerDefaults

Sino a visto como se ve la integración de SharePoint con Reporting Services, puede revisar en la administración central, Monitoring en Search administration Reports, allí hay una librería de reportes que como documentos son depositados en la librería y al hacer doble clic sobre ellos muestra el reporte integrado dentro de SharePoint.

ReportLibrary Integration4Fun!,

Manolo Herrera