Compartir a través de


Usar Microsoft Azure WebJobs con Office 365

Puede implementar la funcionalidad del trabajo del temporizador mediante Microsoft Azure WebJobs o el Programador de tareas de Windows para realizar tareas en SharePoint Online. Un trabajo de temporizador es un proceso repetitivo, programado y en segundo plano que se ejecuta en SharePoint para realizar determinadas tareas.

Por ejemplo, es posible que desee que un trabajo de temporizador copie los datos especificados en una lista de SharePoint en una base de datos. En SharePoint Online, no se pueden implementar soluciones de granja de servidores, que es cómo se implementaron los trabajos del temporizador en el pasado. Para implementar una funcionalidad de trabajo de temporizador similar en SharePoint Online, debe ejecutar una aplicación de consola como azure webjob. La aplicación de consola accede a SharePoint Online mediante el modelo de objetos del lado cliente (CSOM).

En este artículo se presentan los conceptos básicos implicados en la implementación de aplicaciones de consola como Azure WebJobs para ejecutar y acceder a los sitios y el contenido de SharePoint Online.

Nota:

El código de este artículo se proporciona tal cual, sin garantía de ningún tipo, expresa o implícita, incluidas las garantías implícitas de aptitud para un propósito particular, comerciabilidad o ausencia de infracción.

Creación y ejecución de una aplicación de consola como Azure WebJob

Para configurar la aplicación de consola para que se ejecute como Azure WebJob, debe:

  1. Cree una cuenta de organización para que Azure WebJob lo use para acceder a los sitios y el contenido de SharePoint.

  2. Cree y configure la aplicación de consola.

  3. Agregue código a la aplicación de consola.

  4. Publique la aplicación de consola como Azure WebJob.

  5. Ejecute y compruebe el trabajo web de Azure.

Creación de una cuenta de organización

Debe crear una cuenta para que Azure WebJob se use al acceder a sitios y contenido de SharePoint. Para obtener más información, vea Agregar usuarios individualmente o de forma masiva a Office 365: ayuda para administradores.

Cuando se ejecuta Azure WebJob, el campo Modificado por almacena y muestra el valor especificado en Nombre para mostrar de la cuenta de la organización. Asegúrese de elegir un nombre para mostrar que los usuarios puedan identificar fácilmente como la cuenta que usa Azure WebJob para acceder a SharePoint.

Creación y configuración de la aplicación de consola

Para crear una aplicación de consola que se ejecute como un trabajo web de Azure, siga estos pasos:

  1. Cree un nuevo proyecto de aplicación de consola. En Visual Studio, elija Nuevo proyecto>Visual C#>Aplicación de> consolaAceptar.

  2. Una vez creada la aplicación de consola, elija Herramientas>Administrador de paquetes> NuGetAdministrar paquetes NuGet para la solución>en línea>todo.

  3. Busque App for SharePoint Web Toolkit.

  4. Elija Instalar y, a continuación, aceptar.

  5. Elija Cerrar.

  6. Compruebe que SharePointContext.cs y TokenHelper.cs se agregaron al proyecto de aplicación de consola.

  7. Guarde la información de la cuenta en el archivo app.config agregando el elemento appSettings que se muestra. Cambie SPOAccount y SPOPassword por el nombre de usuario y la contraseña de la cuenta de organización que creó anteriormente.

     <?xml version="1.0" encoding="utf-8" ?>
      <configuration>
       <startup> 
         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
       </startup>
       <appSettings>
         <add key="SPOAccount" value="admin@contoso.onmicrosoft.com"/>
         <add key="SPOPassword" value="Contoso"/>
       </appSettings>
      </configuration>
    

    Precaución

    App.config almacena el nombre de usuario y la contraseña de la cuenta de la organización en texto no cifrado. Este método solo se usa con fines de demostración y no debe usarse en la implementación de producción de Azure WebJobs. Se recomienda cifrar la contraseña o autenticarse mediante OAuth con tokens de acceso. Para obtener más información, vea la entrada de blog kirk Evans sobre la creación de un complemento de SharePoint como un trabajo de temporizador.

Adición de código a la aplicación de consola

En Program.cs, agregue el código siguiente a la aplicación de consola.

  1. Agregue instrucciones using .

     using Microsoft.SharePoint.Client;
     using System.Security;
     using System.Configuration; 
    
  2. Agregue los métodos siguientes a la clase :

    • Main inicia sesión en el sitio de SharePoint y, a continuación, usa el CSOM para realizar tareas en su sitio o contenido. En este ejemplo de código se usa el CSOM para buscar una lista y generar el número total de elementos que se encuentran en la lista en la ventana de consola. Al usar Azure WebJobs, puede ver la salida de la ventana de consola en Detalles de ejecución de WebJob, que se explica en Ejecutar y comprobar azure WebJob.

    • GetSPOSecureStringPassword lee la contraseña de app.config.

    • GetSPOAccountName lee el nombre de usuario de app.config.

	static void Main(string[] args)
	    {
	        using (ClientContext context = new ClientContext("https://contoso.sharepoint.com"))
	        {
	            // Use default authentication mode.
	            context.AuthenticationMode = ClientAuthenticationMode.Default;                 
	            context.Credentials = new SharePointOnlineCredentials(GetSPOAccountName(), GetSPOSecureStringPassword());
	
	            // Add your CSOM code to perform tasks on your sites and content.
	
	            try
	            {
	                List objList = context.Web.Lists.GetByTitle("Docs");
	                context.Load(objList);
	                context.ExecuteQuery();
	
	                if (objList != null &amp;&amp; objList.ItemCount > 0)
	                {
	                    Console.WriteLine(objList.Title.ToString() + " has " + objList.ItemCount + " items.");
	                }
	
	            }
	            catch (Exception ex)
	            {
	                Console.WriteLine("ERROR: " + ex.Message);
	                Console.WriteLine("ERROR: " + ex.Source);
	                Console.WriteLine("ERROR: " + ex.StackTrace);
	                Console.WriteLine("ERROR: " + ex.InnerException);
	
	            }
	        }
	            
	    }
	
	private static SecureString GetSPOSecureStringPassword()
	{
	  try
	  {
	      Console.WriteLine("Entered GetSPOSecureStringPassword.");
	      var secureString = new SecureString();
	      foreach (char c in ConfigurationManager.AppSettings["SPOPassword"])
	      {
	          secureString.AppendChar(c);
	      }
	      Console.WriteLine("Constructed the secure password.");
	
	      return secureString;
	  }
	  catch
	  {
	      throw;
	  }
	}
	
	private static string GetSPOAccountName()
	{
	  try
	  {
	      Console.WriteLine("Entered GetSPOAccountName.");
	      return ConfigurationManager.AppSettings["SPOAccount"];
	  }
	  catch
	  {
	      throw;
	  }
	}
	

Publicación de la aplicación de consola como Azure WebJob

Cuando haya terminado de desarrollar la aplicación de consola, debe implementar la aplicación de consola como Azure WebJob. Para implementar la aplicación de consola como Azure WebJob, puede hacer lo siguiente:

Ejecución y comprobación de Azure WebJob

Después de completar todos los pasos anteriores, Azure WebJob debe ejecutar y realizar tareas en la suscripción de Office 365. En ocasiones, es posible que tenga que realizar el mantenimiento o solucionar problemas de Azure WebJobs. Para comprobar que Azure WebJob se está ejecutando:

  • Si Azure WebJob actualizó un elemento de SharePoint, como un elemento de lista, el campo Modificado por muestra la cuenta de organización que azure WebJob usó para acceder a SharePoint.

  • Revise los registros de detalles de WebJob de Azure WebJob. Los registros de detalles de WebJob permiten revisar cuándo se ejecutó un trabajo, el éxito o el error de una ejecución de trabajo, cualquier salida del trabajo web (por ejemplo, cuando se llamó a Console.WriteLine) y otros detalles de la ejecución del trabajo. Para obtener más información, consulte la sección Ver el historial de trabajos en Ejecutar tareas en segundo plano con WebJobs.

Vea también