SharePoint —  Primer Enfoque a una Configuración para Desarrollo

Escribo este artículo porque he notado que no hay documentación clara acerca de como configurar Sharepoint correctamente para desarrollo. Estoy en un proyeto donde teno que desarrollar una aplicación Sharepoint y quisiera compartir (y documentar) como configurar un Sharepoint que soporte debugging de nuevas aplicaciones desde Visual Studio.

No voy a profundizar en tecnologías Sharepoint esta vez, pero si te interesa, pegale una mirada a este link.

La meta:

Configurar una nueva instalación  Sharepoint 2013 en un servidor para ser capaz de debuggear aplicaciones hechas en Visual Studio 2015.

Lo que tengo hasta ahora:

Un nuevo Sharepoint 2013 instalado en Windows Server 2012 R2, corriendo como una máquina VMWare. Ya corrí el wizard y el sitio de administración fue creado en el puerto 40000. Y también creé una Web Application en el puerto 80 y una site collection ahí.

Una pequeña aplicación Visual Studio que quiero debuggear en Sharepoint (para saber como hacer una de estas, referirse a este link).

Cuando intento correr la aplicación VS por primera vez, aparece el primer error:  “Sharepoint sideloading of apps is not enabled on this site”. Siguiendo los estándares de seguridad de los productos Microsoft (tan seguro como sea posible de fábrica) muchas de las funcionalidades de desarrollo e Sharepoint están desactivadas por defecto. Solución: abrir una consola PowerShell de administración de Sharepoint (Sharepoint Management Powershell Console) y escribir:

nable-SPFeature e374875e-06b6–11e0-b0fa-57f5dfd72085 –url .

Este comando no es muy divertido: una vez que lo corriste, no hay ningún mensaje avisándote si la operación fue exitosa o no… simplemente corre.

Después de esto, intenté nuevamente correr mi aplicación VS en Sharepoint.  El error de sideloading ya no está pero ahora hay un “Internal Server error (500)”. Muy claro, decidí mirar el logger de eventos del servidor y esto fue lo que encontré:

WebHost failed to process a request.

Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/6943758

Exception: System.ServiceModel.ServiceActivationException: The service ‘/_vti_bin/client.svc’ cannot be activated due to an exception during compilation. The exception message is: Memory gates checking failed because the free memory (96956416 bytes) is less than 5% of total memory. As a result, the service will not be available for incoming requests. To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element.

Parece que fuí un poco codicioso con la memoria del servidor. 2 gigas no son suficientes. Detuve el servidor, le di 1GB mas y lo inicié de nuevo.

Nuevo intento de correr la aplicación. Adivina que, algo más está faltando. El siguiente error aparece:

Error occurred in deployment step ‘Install app for SharePoint’: App Management Shared Service Proxy is not installed.

Una búsqueda rápida me da una pista de como agregar ese servicio en Sharepoint:

Ir a Central Administration -> Manage Service Applications (Application Management section) -> Create an App Management Service. S+TF}

Sharepoint App Management Shared Service Proxy

  • Agregar un par de nombres (para el servicio y la app pool donde el managemen service va a correr), dejé las otras cosas configuradas por defecto y creé la aplicación. En mi caso la llamé DeployApps.

El Management Service App y el  Proxy se crean rápidamente así:

Sharepoint App Management Shared Service Proxy

Ahora a probar de nuevo, veamos que pasó. Apreto F5 y…

Error occurred in deployment step ‘Install app for SharePoint’: There are no addresses available for this application.

Otra búsqueda rápida… y acá está el problema: El SharePoint Foundation Subscription Settings Service está faltando junto con su proxy.

Para instalarlo, hay que correr el siguiente script:

$account = Get-SPManagedAccount <your admin managed account>

$appPool = New-SPServiceApplicationPool -Name <name_of_your_choice> -Account $account

$serviceApp = New-SPSubscriptionSettingsServiceApplication -ApplicationPool $appPool -name “Subscription Settings Service Application” -DatabaseName “<choose a db name>”

$serviceAppProxy = New-SPSubscriptionSettingsServiceApplicationProxy -ServiceApplication $serviceApp

Una vez que esto está instalado, asignar una URL de aplicación al servidor. Para hacer esto ir a Central Administration->Apps->Configure App Urls: Yo las configuré así:

Sharepoint Central Administration - Apps - Configure App URLs

(El mensaje rojo es por el nombre de prueba: Al escribir una URL válida el mensaje desaparece)

Ahora intento de nuevo: Mismo problema. Reinicié IIS. Mismo error! Que está pasando? Vamos a revisar algunas cosas en IIS:

– Verificar IIS: resetear y corriendo

– Verificar sitios: todos iniciados

Revisar Sharepoint App Pools: todas corrien… momento.

Sharepoint Web Services Root

Parece que el servicio no está configurado para iniciarse por default. Ir a Advanced Properties, cambiar Start Automatically a true y Start Mode a Always Running. Guardar e iniciar el app pool.

Nuevamente, reiniciar IIS (usando IIS Manager o iisreset), revisar que todos los servicios estén corriendo e intentar correr la aplicación desde Visual Studio de nuevo:

Sharepoint App en Visual Studio

Voilá! La aplicación está corriendo

Espero que esta serie de pasos ayude a alguien a acelerar su primera experiencia de desarrollo Sharepoint!

By: Agustín

Summary
SharePoint — First Approach to Dev Configuration
Article Name
SharePoint — First Approach to Dev Configuration
Description
A guide to achieve a development setup with Sharepoint and Visual Studio.
Author
Publisher Name
Diveria
Publisher Logo