Depurar y solucionar problemas de un receptor de eventos remotos en un complemento de SharePoint
Configurar la depuración para un sitio de prueba de SharePoint remoto
Nota:
Los procedimientos de esta sección solo se aplican cuando el sitio de prueba de SharePoint se encuentra en un equipo distinto al de Visual Studio o cuando se usa un sitio para desarrolladores de SharePoint Online como sitio de prueba. Si SharePoint y Visual Studio están en el mismo equipo, omita esta sección.
Cuando un proyecto de complemento de SharePoint en Visual Studio incluye un receptor de eventos remotos (RER) o un receptor de eventos de complemento, debe realizar una configuración rápida adicional en las propiedades del proyecto para poder depurar el complemento con (F5). Esta configuración, en cambio, requiere que se realice alguna configuración de Azure. No tiene que repetir la configuración de Azure para cada proyecto que tenga un RER o un evento de complemento. (Si el complemento incluye un controlador de eventos AppInstalled, el complemento ni siquiera se ejecuta con F5 o CTRL+F5 [ejecutar sin depurar] a menos que se realice la configuración en esta sección).
Para configurar Azure
Si aún no tiene una, obtenga una suscripción de Microsoft Azure. Se incluye una como beneficio con una suscripción a MSDN.
Siga las instrucciones que se ofrecen en el artículo sobre cómo crear un espacio de nombres de Service Bus.
Para configurar el proyecto de complemento de SharePoint en Visual Studio
Debe tener la versión más reciente de Office Developer Tools para Visual Studio, por lo que ejecute aquí el instalador de WebPI o el instalador de Office Developer Tools para Visual Studio 2015.
Después de agregar un RER o un controlador de eventos de complemento a un proyecto de complemento de SharePoint en Visual Studio, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione Propiedades.
En el panel de propiedades, abra la pestaña SharePoint y desplácese hasta el final.
Active la casilla Habilitar la depuración mediante el bus de servicio de Microsoft Azure.
Escriba la cadena de conexión completa en el cuadro de texto proporcionado. Puede obtener la cadena con estos pasos.
Inicie sesión en Azure Portal y abra la pestaña Service Bus.
Abra el espacio de nombres que creó para la depuración de RER y navegue a las cadenas de conexión. La interfaz de usuario de Azure Portal cambia con frecuencia. Si no encuentra las cadenas de conexión, vea la ayuda de Azure Portal.
Copie la cadena de conexión SAS. Esta es la cadena que escribió en las propiedades del proyecto de Visual Studio.
En el futuro, cuando cree proyectos de Complemento de SharePoint en Visual Studio, esta información ya estará rellenada y no tendrá que abrir el portal de Azure cada vez.
Probar la configuración
Siga los procedimientos que se indican en esta sección para comprobar que puede depurar un RER.
Para crear un proyecto con un receptor de eventos remoto
En Visual Studio, cree un complemento de SharePoint hospedado por el proveedor. Vea Introducción a la creación de complementos de SharePoint hospedados por el proveedor.
En el Explorador de soluciones, seleccione el nodo del proyecto de complemento.
En la barra de menús, seleccione Proyecto>Agregar nuevo elemento.
En el panel Plantillas, seleccione la plantilla Lista y luego Agregar.
Seleccione Finalizar para agregar una lista personalizada predeterminada al proyecto del complemento.
Agregue otro elemento al proyecto de complemento seleccionando la plantilla Receptor de eventos remotos en el panel Plantillas.
En el cuadro Nombre, deje el nombre predeterminado (RemoteEventReceiver1) y luego seleccione Agregar.
En la lista ¿Qué tipo de receptor de eventos desea usar?, seleccione Eventos de elementos de lista. Deje el origen del evento como List1, que es la lista que agregó en los pasos anteriores.
En la lista Controlar los siguientes eventos, seleccione Se va a agregar un elemento y, luego, Finalizar.
Se agrega un servicio web a la aplicación web para controlar el evento remoto que especificó. Se agrega un receptor de eventos remoto a la Complemento de SharePoint. El receptor hace referencia al servicio web y al evento de elementos de lista del archivo Elements.xml del receptor de eventos.
En el proyecto de complemento, abra AppManifest.xml.
Cambie la página de inicio a la página de la lista: nombreDeProyectoDeComplemento/Lists/List1.
Reemplace nombreDeProyectoDeComplemento por el nombre de su proyecto de complemento, por ejemplo,
SharePointAddIn4/Lists/List1
. En este ejemplo, establecemos la página de inicio en la página de la lista. Pero, en un complemento típico, probablemente apuntaría a su propia interfaz de usuario en la página del proyecto web.
Para ejecutar y probar la depuración de un controlador de eventos
Si aún no lo ha hecho, complete el procedimiento anterior, Para configurar el proyecto de complemento de SharePoint en Visual Studio.
En el proyecto web, abra el servicio del receptor de eventos remotos (RemoteEventReceiver1.svc) y luego agregue un punto de interrupción en cualquier línea de código dentro del método
ProcessEvent()
.Seleccione la tecla F5 para ejecutar el proyecto.
Seleccione el botón + Nuevo elemento para agregar un elemento a la lista.
Asigne un título al elemento y seleccione Guardar. Se alcanzará el punto de interrupción que agregó al receptor de eventos remotos, lo que comprueba que está depurando el receptor de eventos remotos.
Seleccione la tecla F5 para continuar con la ejecución del proyecto y, cuando haya terminado, detenga la depuración.
Activar o desactivar la notificación de Visual Studio que indica que es necesario configurar la depuración de eventos
Si tiene un evento remoto en el proyecto y no ha configurado la depuración de eventos remotos, Visual Studio le pedirá que la configure (vea la siguiente ilustración). Puede cambiar este comportamiento desactivando la casilla Avisarme si la depuración de eventos remotos no está configurada en la pestaña SharePoint.
Notificación de depuración de eventos remotos
Comprobar que el servicio está hospedado en Service Bus
Después de seleccionar F5 y confiar en el complemento, vaya al espacio de nombres de Service Bus en el explorador (por ejemplo http://mynamespace.servicebus.windows.net
) y debería ver que su punto de conexión aparece como número. En la ilustración siguiente se muestra el aspecto de la página cuando no se muestra un espacio de nombres; es decir, antes de seleccionar F5.
Examinar el espacio de nombres de Service Bus
El RER no alcanza el punto de interrupción
Según el evento, el evento remoto puede ser sincrónico o asincrónico. Si es asincrónico, puede tardar unos segundos o más tiempo en alcanzar el punto de interrupción.
Error: “No había ningún punto de conexión escuchando”
El siguiente error aparece cuando su controlador se ejecuta en producción:
"Error en la llamada del receptor de eventos remotos. Detalles: no había ningún punto de conexión escuchando en https://{domain}:nnnnn/{path}/AppEventReceiver.svc
que pudiera aceptar el mensaje. Esto suele deberse a una dirección incorrecta o a una acción SOAP". (donde nnnnn es un puerto).
SharePoint requiere que no haya un puerto explícito en la URL del controlador en producción. Esto significa que debe usar el puerto 443 para HTTPS (es la opción que le recomendamos) o el puerto 80 para HTTP.
Error: “No se pudo establecer una relación de confianza para el canal seguro SSL/TLS con la autoridad”
El siguiente error aparece cuando su controlador se ejecuta en producción:
"Error en la llamada del receptor de eventos remotos. Detalles: no se pudo establecer una relación de confianza para el canal seguro SSL/TLS con autoridad."
Cuando el complemento está en SharePoint Online, pero el servicio del receptor de eventos remotos está en el entorno local y usa HTTPS (como recomendamos), el servidor que hospeda el receptor no puede usar un certificado autofirmado en producción. El servidor debe tener un certificado de aceptación pública de una entidad de certificación. Si el complemento está en una granja de SharePoint local, los certificados autofirmados son aceptables.