Pregunta

Al desarrollar aplicaciones hospedadas por el proveedor y realizar pruebas en SharePoint Online, noté que mi evento remoto AppInstalled a menudo se activa 4 veces al instalar la aplicación en el contenido del sitio.Aquí hay una excepción de un registro:

[07:47:38] ProcessEvent: AppInstalled
[07:47:54] ProcessEvent: AppInstalled
[07:48:04] ProcessEvent: AppInstalled
[07:48:10] ProcessEvent: AppInstalled

Sospecho que SPO cree que la instalación falló de alguna manera y, por lo tanto, intenta intentar instalarla nuevamente.¿Cómo puedo evitar que esto suceda?Intenté usar clientContext.RequestTimeout = Timeout.Infinite sin éxito

¿Fue útil?

Solución 2

Todavía tengo que encontrar una buena solución a este problema.Algunos sugiere interceptar eventos y cancelarlos/detenerlos hasta que termine la primera llamada.Si bien pude usar esta técnica durante el desarrollo, sin embargo, causa otros problemas, especialmente con la comunicación con SharePoint si la aplicación se instaló correctamente o no.Por lo tanto, no lo encuentro una solución aceptable para la producción.

Decidí remediar la situación moviendo el código de aprovisionamiento (que cuesta mucho tiempo) del evento AppInstall a un botón en la página de la aplicación.El usuario primero tendrá que instalar la aplicación, luego abrir la aplicación y hacer clic manualmente en el botón para completar la instalación.Desde el punto de vista de la experiencia del usuario, esto no es tan bueno, pero parece ser la forma más adecuada de hacerlo por ahora.

Otros consejos

Tiene razón en que el SP volverá a intentarlo 4 veces si no se puede instalar, actualizar o desinstalar. ¿Ha verificado si hay algún error que se arroje desde su evento remoto?¿Podría haber errores al generar ClientContext?¿Un fragmento del código ayudará a diagnosticar?

Si tiene errores, asegúrese de configurar el ErrorMessage y el Status del SPRemoteEventResult result = new SPRemoteEventResult(); antes de volver a SharePoint.

También puede propagar errores a la página Detalles de la aplicación usando el siguiente código:

Microsoft.SharePoint.Client.Utilities.Utility.LogCustomRemoteAppError(ctx, productId, messageToLog);
ctx.ExecuteQuery();
Licenciado bajo: CC-BY-SA con atribución
scroll top