Freigeben über


Verwenden von Microsoft Azure WebJobs mit Office 365

Sie können Zeitgeberauftragsfunktionen implementieren, indem Sie Microsoft Azure WebJobs oder Windows Task Scheduler verwenden, um Aufgaben in SharePoint Online auszuführen. Ein Zeitgeberauftrag ist ein sich wiederholender, geplanter Hintergrundprozess, der in SharePoint ausgeführt wird, um bestimmte Aufgaben auszuführen.

Beispielsweise möchten Sie, dass ein Zeitgeberauftrag Daten, die in einer SharePoint-Liste eingegeben wurden, in eine Datenbank kopiert. In SharePoint Online können Sie keine Farmlösungen bereitstellen. Dies ist die Vorgehensweise, wie Zeitgeberaufträge in der Vergangenheit bereitgestellt wurden. Um ähnliche Timerauftragsfunktionen in SharePoint Online zu implementieren, müssen Sie eine Konsolenanwendung als Azure WebJob ausführen. Die Konsolenanwendung greift mithilfe des clientseitigen Objektmodells (CSOM) auf SharePoint Online zu.

In diesem Artikel werden die grundlegenden Konzepte für die Bereitstellung von Konsolenanwendungen als Azure WebJobs zum Ausführen und Zugreifen auf Ihre SharePoint Online-Websites und -Inhalte vorgestellt.

Hinweis

Der Code in diesem Artikel wird wie besehen und ohne jegliche Garantie zur Verfügung gestellt, gleich ob ausdrücklich oder konkludent, einschließlich jedweder stillschweigenden Gewährleistung der Eignung für einen bestimmten Zweck, Marktgängigkeit oder Nichtverletzung von Rechten.

Erstellen und Ausführen einer Konsolenanwendung als Azure WebJob

Um Ihre Konsolenanwendung für die Ausführung als Azure WebJob einzurichten, müssen Sie Folgendes ausführen:

  1. Erstellen Sie ein organization Konto für den Azure WebJob, mit dem Sie auf Ihre SharePoint-Websites und -Inhalte zugreifen können.

  2. Erstellen und Einrichten der Konsolenanwendung

  3. Fügen Sie der Konsolenanwendung Code hinzu.

  4. Veröffentlichen Sie Ihre Konsolenanwendung als Azure WebJob.

  5. Führen Sie Ihren Azure WebJob aus, und überprüfen Sie es.

Erstellen eines organization-Kontos

Sie müssen ein Konto für den Azure-Webauftrag erstellen, der beim Zugriff auf SharePoint-Websites und -Inhalte verwendet werden kann. Weitere Informationen finden Sie unter Hinzufügen von einzelnen Benutzern oder Massenhinzufügen von Benutzern zu Office 365 – Administratorhilfe.

Wenn der Azure WebJob ausgeführt wird, wird im Feld Geändert von der Wert gespeichert und angezeigt, der in Anzeigename des organization Kontos eingegeben wurde. Stellen Sie sicher, dass Sie einen Anzeigenamen auswählen, den Ihre Benutzer einfach als das Konto identifizieren können, das vom Azure-Webauftrag für den Zugriff auf SharePoint verwendet wird.

Erstellen und Einrichten der Konsolenanwendung

Führen Sie die folgenden Schritte aus, um eine Konsolenanwendung zu erstellen, die als Azure-WebJob ausgeführt werden soll:

  1. Erstellen Sie ein neues Konsolenanwendungsprojekt. Wählen Sie in Visual Studio Neues Projekt>Visual C#>Konsolenanwendung>OK aus.

  2. Nachdem die Konsolenanwendung erstellt wurde, wählen Sie Tools>NuGet-Paket-Manager>NuGet-Pakete für Projektmappe>online>alle verwalten aus.

  3. Suchen Sie nach App für SharePoint Web Toolkit.

  4. Wählen Sie Installieren und dann OK aus.

  5. Wählen Sie Schließen aus.

  6. Vergewissern Sie sich, dass SharePointContext.cs und TokenHelper.cs dem Konsolenanwendungsprojekt hinzugefügt wurden.

  7. Speichern Sie Ihre Kontoinformationen in der app.config-Datei, indem Sie das angezeigte appSettings-Element hinzufügen. Ändern Sie SPOAccount und SPOPassword in den Benutzernamen und das Kennwort des zuvor erstellten organization Kontos.

     <?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>
    

    Achtung

    App.config speichert den Benutzernamen und das Kennwort des organization-Kontos in Klartext. Diese Methode wird nur zu Demonstrationszwecken verwendet und sollte nicht in Der Produktionsbereitstellung Ihrer Azure WebJobs verwendet werden. Es wird empfohlen, das Kennwort zu verschlüsseln oder OAuth mit Zugriffstoken zu authentifizieren. Weitere Informationen finden Sie im Kirk Evans-Blogbeitrag zum Erstellen eines SharePoint-Add-Ins als Zeitgeberauftrag.

Hinzufügen von Code zur Konsolenanwendung

Fügen Sie der Konsolenanwendung in Program.cs den folgenden Code hinzu.

  1. Fügen Sie using-Anweisungen hinzu.

     using Microsoft.SharePoint.Client;
     using System.Security;
     using System.Configuration; 
    
  2. Fügen Sie der Klasse die folgenden Methoden hinzu:

    • Main meldet sich bei Ihrer SharePoint-Website an und verwendet dann das CSOM, um Aufgaben auf Ihrer Website oder Ihrem Inhalt auszuführen. In diesem Codebeispiel wird das CSOM verwendet, um eine Liste zu suchen und die Gesamtanzahl der Elemente, die sich in der Liste befinden, im Konsolenfenster auszugeben. Wenn Sie Azure WebJobs verwenden, sehen Sie die Ausgabe des Konsolenfensters in den WebJob-Ausführungsdetails, die unter Ausführen und Überprüfen Ihres Azure-WebJobs erläutert wird.

    • GetSPOSecureStringPassword liest Ihr Kennwort aus app.config.

    • GetSPOAccountName liest Ihren Benutzernamen aus 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;
	  }
	}
	

Veröffentlichen Ihrer Konsolenanwendung als Azure WebJob

Wenn Sie mit der Entwicklung Ihrer Konsolenanwendung fertig sind, müssen Sie die Konsolenanwendung als Azure WebJob bereitstellen. Um Ihre Konsolenanwendung als Azure WebJob bereitzustellen, haben Sie folgende Möglichkeiten:

Ausführen und Überprüfen Ihres Azure-Webauftrags

Nachdem Sie alle vorherigen Schritte ausgeführt haben, sollte Ihr Azure WebJob ausgeführt werden und Aufgaben in Ihrem Office 365-Abonnement ausführen. Manchmal müssen Sie möglicherweise Eine Wartung oder Problembehandlung für Ihre Azure WebJobs durchführen. So überprüfen Sie, ob Ihr Azure WebJob ausgeführt wird:

  • Wenn Ihr Azure WebJob ein SharePoint-Element wie ein Listenelement aktualisiert hat, zeigt das Feld Geändert von das organization Konto an, das der Azure WebJob für den Zugriff auf SharePoint verwendet hat.

  • Überprüfen Sie die WebJob-Details-Protokolle für Ihren Azure WebJob. Anhand der WebJob-Details-Protokolle können Sie überprüfen, wann ein Auftrag ausgeführt wurde, den Erfolg oder Fehler einer Auftragsausführung, die Ausgabe des WebJobs (z. B. beim Aufruf von Console.WriteLine) und andere Details der Auftragsausführung. Weitere Informationen finden Sie im Abschnitt Anzeigen des Auftragsverlaufs unter Ausführen von Hintergrundaufgaben mit WebJobs.

Siehe auch