Erstellen eines von einem Anbieter gehosteten Add-In, das eine benutzerdefinierte SharePoint-Liste und einen benutzerdefinierten Inhaltstyp enthält

Erstellen Sie ein SharePoint-Add-In, das eine in der Cloud gehostete Webanwendung mit benutzerdefinierten, in SharePoint gehosteten Listenvorlagen, Listeninstanzen und benutzerdefinierten Inhaltstypen unter Verwendung der Office Developer Tools für Visual Studio kombiniert. Erfahren Sie, wie Sie über den REST/OData-Webdienst mit SharePoint-Add-In-Webs interagieren und wie Sie OAuth in ein SharePoint-Add-In implementieren.

Die meisten klassischen SharePoint-Komponenten, z. B. benutzerdefinierte Inhaltstypen, benutzerdefinierte Listendefinitionen und Workflows, können in einem in der Cloud gehosteten SharePoint-Add-In enthalten sein. Das einfache Beispiel in diesem Artikel enthält Folgendes:

  • Add-In-Web mit:

    • Einigen benutzerdefinierten Websitespalten

    • Einem benutzerdefinierten Inhaltstyp, der die benutzerdefinierten Spalten verwendet

    • Einer benutzerdefinierten Listenvorlage, die den benutzerdefinierten Inhaltstyp verwendet

    • Einer Listeninstanz auf Grundlage der benutzerdefinierten Listendefinition

  • Einer ASP.NET-Webanwendung, die Daten aus der Listeninstanz liest

Voraussetzungen zum Erstellen dieses SharePoint-Add-Ins

  • Visual Studio

  • Visual Studio umfasst die Microsoft Office Developer Tools für Visual Studio, manchmal wird eine Version der Tools jedoch zwischen Updates von Visual Studio veröffentlicht. Führen Sie das Installationsprogramm für Office Developer Tools für Visual Studio 2013 oder das Installationsprogramm für Office Developer Tools für Visual Studio 2015 aus, um sicherzustellen, dass Sie die aktuelle Version der Tools haben.

  • Eine SharePoint- Installation zum Testen und Debuggen

    • Dies kann sich auf demselben Computer wie Ihr Entwicklungscomputer befinden, oder Sie können mit einer SharePoint-Remoteinstallation entwickeln. Wenn Sie mit einer Remoteinstallation arbeiten, müssen Sie das redistributable-Clientobjektmodell für die Zielinstallation installieren. Es ist als verteilbares Paket im Microsoft Download Center verfügbar. Suchen Sie nach „SDKs für SharePoint Server 2013-Clientkomponenten" oder „SKDs für SharePoint Online-Clientkomponenten".

    • Die SharePoint-Testwebsite muss aus der Websitedefinition der Entwicklerwebsite (die Sie in der Zentraladministration erstellen können) erstellt werden.

    • Ihre Remote-Webanwendung kommuniziert mit dem Add-In-Web über JavaScript und die domänenübergreifende Bibliothek oder OAuth. Wenn wie in dem folgenden Beispiel dieses Artikels OAuth verwendet wird, muss die SharePoint-Installation für die Verwendung von OAuth konfiguriert sein.

    Hinweis

    Anweisungen zum Einrichten einer Entwicklungsumgebung, die Ihren Anforderungen entspricht, finden Sie unter Zwei Arten von SharePoint-Add-Ins: von SharePoint-gehostet und vom Anbieter gehostet.

Wichtige Kernkonzepte für die Erstellung eines Add-Ins

Bevor Sie Ihr erstes Add-In erstellen, sollten Sie grundsätzlich wissen, was SharePoint-Add-Ins sind, und die Unterschiede zwischen in SharePoint gehosteten und vom Anbieter gehosteten SharePoint-Add-Ins kennen. Die Artikel in den folgenden Tabellen vermitteln Ihnen dieses Wissen.

Titel des Artikels Beschreibung
SharePoint-Add-Ins Hier finden Sie Informationen über das neue Add-In-Modell in SharePoint, das es Ihnen ermöglicht, Add-Ins als kompakte, einfach zu verwendende Lösungen für Endbenutzer zu erstellen.
Kritische Aspekte der Architektur und der Entwicklungslandschaft für SharePoint-Add-Ins Hier finden Sie Informationen über Aspekte der Architektur von SharePoint-Add-Ins und das Modell für SharePoint-Add-Ins, einschließlich Add-In-Hostingoptionen, Benutzeroberflächenoptionen, Bereitstellungssystem, Sicherheitssystem und Lebenszyklus.
Auswählen von Mustern für die Entwicklung und das Hosting Ihres Add-Ins für SharePoint Hier finden Sie Informationen über die verschiedenen Möglichkeiten zum Hosten von SharePoint-Add-Ins.

Entwickeln des SharePoint-Add-Ins

Mit den Schritten in diesem Abschnitt erstellen Sie auf Ihrem Entwicklungscomputer ein SharePoint-Add-In, das eine Add-In-Website mit SharePoint-Komponenten und eine Remote-Webanwendung umfasst.

So richten Sie die Visual Studio-Projektmappe und die dazugehörigen Elemente ein

  1. Erstellen Sie in Visual Studio ein Add-In für SharePoint-Projekt aus dem Office SharePoint | Add-In-Knoten (entweder unter C# oder Visual Basic) im Vorlagenbaum des Assistenten für neue Projekte. Wählen Sie die Hosting-Option Vom Anbieter gehostet. Im folgenden Beispiel dieses Artikels wird C# als Sprache verwendet, und LocalTheater ist der Name des Projekts.

  2. Wählen Sie im Assistenten Fertig stellen aus.

  3. Öffnen Sie im Manifestdesigner die Datei AppManifest.xml. Für das Title-Element wird der Projektname als Standardwert angezeigt. Ersetzen Sie ihn durch einen griffigeren Namen, denn dies ist der Name des Add-Ins, den der Benutzer in der Benutzeroberfläche sieht.

  4. Geben Sie einen Namen für das Add-In ein. Es handelt sich um einen internen Namen, der nur ASCII-Zeichen und keine Leerzeichen enthalten darf, wie z. B. LocalTheater.

  5. Öffnen Sie die Datei „Web.config“ im Webanwendungsprojekt, und fügen Sie das Element <customErrors mode="Off"/> dem Element system.web hinzu.

  6. Überprüfen Sie, ob sich im Web-Anwendungsprojekt Verweise auf die folgenden Assemblys befinden. Wenn Ihre Version von Visual Studio die Verweise nicht automatisch hinzugefügt hat, fügen Sie sie jetzt hinzu.

    • Microsoft.IdentityModel.dll. Die Assembly wird mit Windows Identity Foundation (WIF) im globalen Assemblycache installiert. Da es sich dabei um ein .NET Framework 3.5-Assembly handelt, wird es standardmäßig aus dem Framework-Knoten des Dialogfelds Verweis hinzufügen gefiltert. Sie können einen Verweis darauf hinzufügen, indem Sie direkt zum Verzeichnis C:\Program Files\Reference Assemblies\Microsoft\Windows Identity Foundation\v3.5 Ihres Entwicklungscomputers navigieren.

    • Microsoft.IdentityModel.Extensions.dll. Sie können einen Verweis darauf hinzufügen, indem Sie direkt zum Ordner C:\Program Files\Reference Assemblies\Microsoft\Microsoft Identity Extensions\1.0 Ihres Entwicklungscomputers navigieren.

    • System.IdentityModel.dll. Diese Assembly ist Teil von .NET Framework 4 und wird auf dem Knoten Assemblys | Framework des Dialogfelds Verweis hinzufügen angezeigt.

  7. Wenn die Remote-Webanwendung im Hostweb und im Add-In-Web auf Informationen zugreift, müssen Sie ein AppPermissionRequests-Element mit einem oder mehreren untergeordneten AppPermissionRequest-Elementen zur Datei AppManifest.xml hinzufügen. (Die Webanwendung im fortlaufenden Beispiel dieses Artikels greift nur auf das Add-In-Web zu. Add-In-Prinzipale verfügen automatisch über alle Berechtigungen, die für das Add-In-Web erforderlich sind, sodass die AppManifest.xml im Beispiel kein AppPermissionRequests-Element enthält.) Weitere Informationen zu Berechtigungsanforderungen für Add-Ins und deren Hinzufügen finden Sie unter Add-In-Berechtigungen in SharePoint.

So fügen Sie SharePoint-Komponenten hinzu

Sie fügen SharePoint-Komponenten genauso zu einem Add-In wie zu einer klassischen Farmlösung hinzu. Es kann jedoch nicht jede SharePoint-Komponente in ein SharePoint-Add-In integriert werden. Die Aufgaben, die diese Komponenten ausführen, werden in SharePoint-Add-Ins auf andere Weise durchgeführt.

Detaillierte Informationen zu den verschiedenen Arten von SharePoint-Komponenten, die in einem SharePoint-Add-In enthalten sein können, und wie diese in ein Projekt integriert werden, finden Sie unter Typen von SharePoint-Komponenten, die in einem SharePoint-Add-In enthalten sein können.

Verwenden Sie für das fortlaufende Beispiel die folgenden Verfahren, die Beispiele für die Verwendung von Visual Studio zum Hinzufügen von benutzerdefinierten Spalten, Inhaltstypen, Listenvorlagen und Listeninstanzen zu einem SharePoint-Add-In bieten.

So erstellen Sie benutzerdefinierte Spaltentypen

  1. Fügen Sie im Projektmappen-Explorer ein SharePoint-Element Websitespalte zum SharePoint-Add-In-Projekt mit dem Namen Actor hinzu.

  2. Bearbeiten Sie in der Datei „elements.xml“ für die neue Websitespalte das Element Feld so, dass es die im folgenden Beispiel dargestellten Attribute und Werte aufweist, mit der Ausnahme, dass der Wert der GUID für das Attribut ID, den Visual Studio dafür generiert hat, nicht geändert werden sollte. Vergessen Sie nicht die umschließenden Klammern „{}“.

    <Field ID="{generated GUID}" 
        Name="Actor" 
        Title="Actor" 
        DisplayName="Actor/Actress" 
        Group="Theater and Movies" 
        Description="The person cast, perhaps tentatively, in the role" 
        Type="Text" 
    />
  1. Fügen Sie eine weitere Websitespalte zum Projekt mit dem Namen CastingStatus hinzu.

  2. Bearbeiten Sie in der Datei „elements.xml“ für die neue Websitespalte das Field-Element so, dass es die im folgenden Beispiel dargestellten Attribute und Werte aufweist, mit der Ausnahme, dass der Wert der GUID für das ID-Attribut, den Visual Studio dafür generiert hat, nicht geändert wird.

  <Field ID="{generated GUID}" 
      Name="CastingStatus" 
      Title="CastingStatus"
      DisplayName="Casting Status" 
      Group="Theater and Movies" 
      Description="The current casting status of the role" 
      Type="Choice">
  </Field>
  1. Weil es sich um ein Auswahlfeld handelt, müssen Sie die Auswahlmöglichkeiten, die Reihenfolge ihrer Anzeige in der Dropdownliste, wenn ein Benutzer eine Auswahl trifft, sowie die Standardauswahl angeben. Fügen Sie dem Element Field das folgende untergeordnete Markup hinzu.
  <CHOICES>
      <CHOICE>Not Started</CHOICE>
      <CHOICE>Audition Scheduled</CHOICE>
      <CHOICE>Auditioned</CHOICE>
      <CHOICE>Role Offered</CHOICE>
      <CHOICE>Committed to Role</CHOICE>
  </CHOICES>
  <MAPPINGS>
      <MAPPING Value="1">Not Started</MAPPING>
      <MAPPING Value="2">Audition Scheduled</MAPPING>
      <MAPPING Value="3">Auditioned</MAPPING>
      <MAPPING Value="4">Role Offered</MAPPING>
      <MAPPING Value="5">Committed to Role</MAPPING>
  </MAPPINGS>
<Default>Not Started</Default>

So erstellen Sie den benutzerdefinierten Inhaltstyp

  1. Fügen Sie im Projektmappen-Explorer ein SharePoint-Element Inhaltstyp zum SharePoint-Add-In-Projekt mit dem Namen ActingRole hinzu. Wenn Sie vom Assistenten aufgefordert werden, den Basisinhaltstyp auszuwählen, wählen Sie Element und dann Fertig stellen aus.

  2. Wenn der Inhaltstyp-Designer nicht automatisch geöffnet wird, wählen Sie den Inhaltstyp ActingRole im Projektmappen-Explorer aus, um ihn zu öffnen.

  3. Öffnen Sie die Registerkarte Inhaltstyp im Designer, und füllen Sie die Textfelder wie folgt aus:

    • Inhaltstypname: ActingRole

    • Beschreibung: Stellt eine Rolle in einem Stück oder Film dar.

    • Gruppenname: Theater and Movies

  4. Stellen Sie sicher, dass keines der Kontrollkästchen auf der Registerkarte ausgewählt ist. Das Kontrollkästchen für Erbt die Spalten vom übergeordneten Inhaltstyp ist möglicherweise standardmäßig aktiviert. Deaktivieren Sie es unbedingt.

  5. Öffnen Sie die Registerkarte Spalten im Designer.

  6. Verwenden Sie das Raster, um die beiden Websitespalten zum Inhaltstyp hinzufügen. Sie werden in der Dropdownliste nach ihrem Anzeigenamen aufgelistet: Actor/Actress und Casting Status. (Wenn sie nicht aufgeführt sind, haben Sie das Projekt möglicherweise seit dem Hinzufügen der benutzerdefinierten Websitespalten nicht gespeichert. Wählen Sie Alle speichern aus.

  7. Speichern Sie die Datei, und schließen Sie den Designer.

  8. Der nächste Schritt erfordert, dass Sie direkt im unformatierten XML des Inhaltstyps arbeiten. Wählen Sie daher im Projektmappen-Explorer die dem Inhaltstyp ActingRole untergeordnete Datei „elements.xml“ aus.

  9. Es sind bereits FieldRef-Elemente in der Datei für die zwei Spalten, die Sie hinzugefügt haben, vorhanden. Fügen Sie FieldRef-Elemente für zwei integrierte SharePoint-Spalten als Peers für die beiden bereits vorhandenen Spalten hinzu. Nachfolgend finden Sie das Markup für die Elemente. Sie müssen dieselben GUIDs für das ID-Attribut verwenden, da es sich um integrierte Feldtypen mit festen IDs handelt. Fügen Sie sie über den beiden FieldRef-Elementen für die benutzerdefinierten Websitespalten hinzu.

  <FieldRef Name="LinkTitle" ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="Character" />
  <FieldRef Name="Title" ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" DisplayName="Character" />

Beachten Sie, dass wir diesen Feldern einen benutzerdefinierten Anzeigenamen zugewiesen haben: Character, im Sinne eines Charakters in einem Stück oder Film.

So erstellen Sie die benutzerdefinierte Listenvorlage und eine Listeninstanz

  1. Fügen Sie ein SharePoint-Element Liste zum SharePoint-Add-In-Projekt mit dem Namen CharactersInShow hinzu. Lassen Sie auf der Seite Listeneinstellungen auswählen im Assistenten zum Anpassen von SharePoint den Listenanzeigenamen auf dem Standardwert CharactersInShow, wählen Sie die Option Anpassbare Liste erstellen basierend auf: aus, und wählen Sie in der Dropdownliste Standard (leer) aus. Wählen Sie Fertig stellen aus.

  2. Wenn Sie den Assistenten abschließen, wird eine Listenvorlage CharactersInShow mit einer untergeordneten Listeninstanz namens CharactersInShowInstance erstellt. Möglicherweise wurde standardmäßig ein Listen-Designer geöffnet. Er wird in einem späteren Schritt verwendet.

  3. Öffnen Sie die untergeordnete Datei „elements.xml“ der Listenvorlage CharactersInShow (nicht die untergeordnete Datei „elements.xml“ von CharactersInShowInstance).

  4. Fügen Sie dem Attribut DisplayName Leerzeichen hinzu, damit es besser aussieht: Characters In Show.

  5. Legen Sie das Attribut Description auf The Characters in a play or movie fest.

  6. Übernehmen Sie für alle anderen Attribute jeweils den Standardwert, speichern Sie die Datei, und schließen Sie sie.

  7. Wenn der Listen-Designer nicht geöffnet wurde, wählen Sie den Knoten CharactersInShow im Projektmappen-Explorer aus.

  8. Öffnen Sie die Registerkarte Spalten im Designer, und wählen Sie dann die Schaltfläche Inhaltstypen aus.

  9. Fügen Sie im Dialogfeld Einstellungen für Inhaltstypen den Inhaltstyp ActingRole hinzu.

  10. Wählen Sie in der Liste der Typen den Inhaltstyp ActingRole aus, und wählen Sie dann die Schaltfläche Als Standard festlegen aus.

  11. Wählen Sie den Inhaltstyp Element aus, klicken Sie mit der rechten Maustaste auf die kleine Pfeilspitze, die links vom Inhaltstypnamen angezeigt wird, und wählen Sie dann Löschen aus.

  12. Wiederholen Sie den vorherigen Schritt für den Inhaltstyp Ordner, sodass ActingRole als einziger Inhaltstyp angezeigt wird. Wählen Sie OK aus, um den Dialog zu schließen.

  13. Die Spaltenliste verfügt nun über drei Spalten. Wählen Sie Titel aus, klicken Sie mit der rechten Maustaste auf die kleine Pfeilspitze, die links vom Inhaltstypnamen angezeigt wird, und wählen Sie dann Löschen aus. Jetzt sollten nur zwei Spalten aufgeführt sein: Actor/Actress und Casting Status.

  14. Öffnen Sie die Registerkarte Liste des Designers. Diese Registerkarte wird verwendet,um bestimmte Werte für die Liste Instanz, nicht für die Liste Vorlage festzulegen.

  15. Ändern Sie die Werte auf dieser Registerkarte wie folgt:

  • Titel: Characters in Hamlet

  • Listen-URL: Lists/CharactersInHamlet

  • Beschreibung: Die Charaktere in Hamlet und Casting-Informationen.

Lassen Sie die Kontrollkästchen auf ihrer Standardeinstellung, speichern Sie die Datei, und schließen Sie den Designer.

  1. Im Projektmappen-Explorer wird möglicherweise noch der alte Name der Listeninstanz angezeigt. Wenn dies der Fall ist, öffnen Sie das Kontextmenü für CharactersInShowInstance, wählen Sie die Option Umbenennen, und ändern Sie den Namen in CharactersInHamlet.

  2. Öffnen Sie die Datei „schema.xml“.

  3. In der Datei können zwei ContentType-Elemente vorhanden sein, eines mit dem Name-Attributwert von ActingRole und eines mit dem Namen ListFieldsContentType. Nur das mit dem Namen ActingRole ist relevant, löschen Sie daher alle anderen ContentType-Elemente.

    Hinweis

    Möglicherweise befindet sich kein Zeilenumbruch zwischen den ContentType-Elementen, sodass es zunächst aussieht, als sei nur ein Element vorhanden. Scrollen Sie nach rechts und suchen Sie sorgfältig nach weiteren Elementen.

  4. Das Felder-Element sollte über zwei Feld-Elemente verfügen (die sich in einer Zeile ohne Zeilenumbruch befinden). Eines sollte genau dem Feld-Element der Actor-Websitespalte "elements.xml" entsprechen, und das andere sollte genau dem Feld-Element der CastingStatus-Websitespalte "elements.xml" entsprechen. Wenn keine exakte Übereinstimmung besteht, einschließlich aller untergeordneten Elemente (wie z. B. den Elementen Auswahl und Zuordnungen), kopieren Sie das Feld-Element aus der Datei „elements.xml“ der Websitespalte, und fügen Sie es anstelle des nicht übereinstimmenden Feld-Elements in die Datei „schema.xml“ ein.

  5. Ersetzen Sie dann in der Datei schema.xml im Element View, dessen BaseViewID-Wert "0" ist, das vorhandene Element ViewFields durch das folgende Markup. (Verwenden Sie genau diese GUID für das FieldRef-Element mit dem Namen LinkTitle.)

  <ViewFields>
    <FieldRef Name="Title" ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" DisplayName="Character" />
    <FieldRef Name="Actor" ID="{GUID from the site column elements.xml}" />
    <FieldRef Name="CastingStatus" ID="{GUID from the site column elements.xml}" />
  </ViewFields>
  1. Ersetzen Sie die beiden fehlenden ID-Attributwerte durch die GUIDs in den „elements.xml“-Dateien der entsprechenden Websitespalten. Vergessen Sie nicht die umschließenden Klammern „{}“.

  2. Ersetzen Sie dann in der Datei „schema.xml" im Element View, dessen BaseViewID-Wert „1" ist, das vorhandene Element ViewFields durch das folgende Markup. (Verwenden Sie genau diese GUID für das FieldRef-Element mit dem Namen LinkTitle.)

  <ViewFields>
    <FieldRef Name="LinkTitle" ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="Character" />
  </ViewFields>
  1. Kopieren Sie die beiden FieldRef-Elemente für Actor und CastingStatus , die Sie der vorherigen Ansicht hinzugefügt haben, diesem ViewFields-Element als gleichgeordnete Elemente von LinkTitleFieldRef.

  2. Speichern und schließen Sie die Datei „schema.xml“.

  3. Öffnen Sie die Datei elements.xml, die ein untergeordnetes Element der Listeninstanz CharactersInHamlet ist.

  4. Geben Sie in die Liste einige Anfangsdaten ein, indem Sie das folgende Markup als untergeordnetes Element des ListInstance-Elements hinzufügen.

    <Data>
      <Rows>
        <Row>
          <Field Name="Title">Hamlet</Field>
          <Field Name="Actor">Tom Higginbotham</Field>
          <Field Name="CastingStatus">Committed to Role</Field>
        </Row>
        <Row>
          <Field Name="Title">Claudius</Field>
          <Field Name="Actor"></Field>
          <Field Name="CastingStatus">Not Started</Field>
        </Row>
        <Row>
          <Field Name="Title">Gertrude</Field>
          <Field Name="Actor">Satomi Hayakawa</Field>
          <Field Name="CastingStatus">Auditioned</Field>
        </Row>
        <Row>
          <Field Name="Title">Ophelia</Field>
          <Field Name="Actor">Cassi Hicks</Field>
          <Field Name="CastingStatus">Committed to Role</Field>
        </Row>
        <Row>
          <Field Name="Title">The ghost</Field>
          <Field Name="Actor">Lertchai Treetawatchaiwong</Field>
          <Field Name="CastingStatus">Role Offered</Field>
        </Row>
      </Rows>
    </Data>
  1. Wählen Sie im Projektmappen-Explorer die Option Feature1 aus, um den Feature-Designer zu öffnen. Im Designer legen Sie für den TitelTheater and Movie Data Components und für die BeschreibungWebsitespalten, Inhaltstypen und Listeninstanzen für Daten zu Theater und Film fest. Speichern Sie die Datei, und schließen Sie den Designer.

  2. Wenn Feature1 im Projektmappen-Explorer nicht umbenannt wurde, öffnen Sie das zugehörige Kontextmenü, wählen Sie Umbenennen aus, und benennen Sie die Option in TheaterAndMovieDataComponents um.

So codieren Sie das Remote-Webanwendungs-Projekt

Entwickeln Sie die Webanwendung wie jede andere Webanwendung für Ihren bevorzugten Plattformstapel. Für einen Microsoft-Stapel können Sie entweder den REST/OData-Webdienst oder eines der Clientobjektmodelle in SharePoint verwenden. Für einen Nicht-Microsoft-Stapel können Sie die REST/OData-Endpunkte in SharePoint verwenden, um CRUD-Vorgänge (Create/Read/Update/Delete) für Daten im Add-In-Web auszuführen.

Hinweis

Wenn Sie einen Verweis zu einer Assembly zu Ihrem Webanwendungsprojekt in Visual Studio hinzufügen, legen Sie die Eigenschaft lokale Kopie der Assembly auf True fest, es sei denn Sie wissen, dass die Assembly bereits auf dem Webserver installiert ist oder Sie können sicherstellen, dass sie installiert ist, bevor Sie das Add-In bereitstellen. .NET Framework ist auf Microsoft Azure- Webrollen und Azure-Websites installiert. Die SharePoint-Client-Assemblys und die verschiedenen verwalteten Code-Erweiterungen und -Grundlagen von Microsoft sind jedoch nicht installiert. Die Office Developer Tools für Visual Studio fügen automatisch Verweise auf einige häufig in SharePoint-Add-Ins verwendete Assemblys hinzu und legen die Eigenschaft lokale Kopie fest.

Für das fortlaufende Beispiel entwickeln Sie eine ASP.NET Webanwendung. Führen Sie die folgenden Schritte aus.

  1. Öffnen Sie die Datei Default.aspx und ersetzen Sie das Textelement der Datei durch das folgende Markup. Das Markup fügt die Schaltfläche Cast abrufen hinzu, die bei Auswahl die Liste Characters in Hamlet liest, die sich im Add-In-Web befindet, und die zugehörigen Daten in einem GridView-Steuerelement darstellt, das erst nach dem Drücken der Schaltfläche angezeigt wird.
  <body >
    <form id="form1" runat="server">
      <div>
        <h2>Local Theater</h2>
      </div>
      <asp:Literal ID="Literal1" runat="server"><br /><br /></asp:Literal>
      <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Get the Cast"/>
      <asp:Literal ID="Literal2" runat="server"><br /><br /></asp:Literal>
      <asp:GridView ID="GridView1" runat="server" Caption="The Cast" ></asp:GridView>
    </form>
  </body>

  1. Öffnen Sie die Datei Default.aspx.cs und fügen Sie die folgenden using-Anweisungen hinzu.
  using Microsoft.SharePoint.Client;
  using Microsoft.IdentityModel.S2S.Tokens;
  using System.Net;
  using System.IO;
  using System.Xml;
  using System.Data;
  using System.Xml.Linq;
  using System.Xml.XPath;
  using Microsoft.SharePoint.Samples;

Die letzte dieser Anweisungen bezieht sich auf den Namespace, der in der Datei TokenHelper.cs deklariert ist.


3. Fügen Sie der **Default**-Klasse die folgenden Felder hinzu. ""csharp SharePointContextToken contextToken; Zeichenfolge accessToken; URI sharepointUrl; ```
  1. Ersetzen Sie die Page_Load-Methode durch den folgenden Code, der die TokenHelper-Klasse verwendet, um Token von dem OAuth-kompatiblen sicheren Token-Server abzurufen. Das Zugriffstoken wird dann in der CommandArgument-Eigenschaft der Schaltfläche für den späteren Abruf durch den Click-Ereignishandler der Schaltfläche gespeichert.
    protected void Page_Load(object sender, EventArgs e)
  {
      TokenHelper.TrustAllCertificates();
      string contextTokenString = TokenHelper.GetContextTokenFromRequest(Request);

      if (contextTokenString != null)
      {
          // Get context token
          contextToken = TokenHelper.ReadAndValidateContextToken(contextTokenString, Request.Url.Authority);

          // Get access token
          sharepointUrl = new Uri(Request.QueryString["SPAppWebUrl"]);
          accessToken = TokenHelper.GetAccessToken(contextToken, sharepointUrl.Authority).AccessToken;
          
          // Pass the access token to the button event handler.
          Button1.CommandArgument = accessToken;
      }
  }

  1. Fügen Sie der Default-Klasse den folgenden Ereignishandler hinzu. Der Handler ruft zunächst das Zugriffstoken ab, das in der CommandArgument-Eigenschaft der Schaltfläche gespeichert wurde.
    protected void Button1_Click(object sender, EventArgs e)
  {
      // Retrieve the access token that the Page_Load method stored
      // in the button's command argument.
      string accessToken = ((Button)sender).CommandArgument;
  }

  1. Der Handler muss die geänderte Add-In-Web-URL auf Postbacks neu beziehen. Fügen Sie daher den folgenden Code hinzu.
      if (IsPostBack)
    {
        sharepointUrl = new Uri(Request.QueryString["SPAppWebUrl"]);
    }

  1. Fügen Sie die folgende Zeile hinzu, die einen der SharePoint-REST/OData-Endpunkte zum Abrufen von Listendaten verwendet. In diesem Beispiel liest der Code die Liste Characters in Hamlet, die für das Add-In-Web bereitgestellt wurde. Mit den APIs für diesen Dienst können Sie ganz einfach eine Liste mit nur einer einzelnen Codezeile und drei Felder aus der Liste für die Rückgabe auswählen.

Beachten Sie, dass Sie in der OData-URL die internen Namen der Felder (Spalten) und nicht die Anzeigenamen verwenden, damit der Code Title, Actor und CastingStatus und nicht Character, Actor/Actress und Casting Status verwendet. Weitere Informationen über den REST/OData-Webdienst finden Sie unter Verwenden von OData-Abfragevorgängen in SharePoint REST-Anforderungen.

    // REST/OData URL section
    string oDataUrl = "/_api/Web/lists/getbytitle('Characters In Hamlet')/items?$select=Title,Actor,CastingStatus";

  1. Fügen Sie den folgenden Code hinzu, der die Klassen HttpWebRequest und HttpWebResponse des System.Net-Namespace verwendet, um die HTTP-Anforderungs- und -Antwortobjekte zu erstellen.
  // HTTP Request and Response construction section
  HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(sharepointUrl.ToString() + oDataUrl);
  request.Method = "GET";
  request.Accept = "application/atom+xml";
  request.ContentType = "application/atom+xml;type=entry";
  request.Headers.Add("Authorization", "Bearer " + accessToken);
  HttpWebResponse response = (HttpWebResponse)request.GetResponse();

  1. Fügen Sie den folgenden Code hinzu, um die XML-Antwort im ATOM-Format zu analysieren. Es werden die Klassen der System.Xml verwendet. Linq-Namespace , um die zurückgegebenen Daten zu analysieren und eine Liste<T> der Elemente aus der SharePoint-Liste zu erstellen. (Sie können auch die Klassen der System.Xml-Namespace verwenden.)

Beachten Sie, dass die untergeordneten Elemente des Eintrag-Elements in der von SharePoint zurückgegebenen XML Metadaten zum Listenelement enthalten. Die tatsächlichen Zeilendaten eines SharePoint-Listenelements sind zwei Ebenen tiefer im Eigenschaften-Element angeordnet. Aus diesem Grund wird die Elements<T-Erweiterungsmethode> zweimal verwendet, um die höheren Ebenen herauszufiltern.

  // Response markup parsing section
  XDocument oDataXML = XDocument.Load(response.GetResponseStream(), LoadOptions.None);
  XNamespace atom = "http://www.w3.org/2005/Atom";
  XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices";
  XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"; 

  List<XElement> entries = oDataXML.Descendants(atom + "entry")
                          .Elements(atom + "content")
                          .Elements(m + "properties")
                          .ToList();

  1. Fügen Sie die folgende LINQ-Abfrage hinzu, um eine IEnumerable<T-Auflistung> eines anonymen Typs zu erstellen, der nur die eigenschaften aufweist, die Sie benötigen und keine anderen. Beachten Sie, dass der Code zwar durch den internen Namen Title auf das Titelfeld des Elements verweisen muss, der Eigenschaftsname im anonymen Typ, dem der Wert zugewiesen wurde, jedoch als Character bezeichnet werden kann. Dies führt unter anderem dazu, dass für die Sammlung bei der Bindung an ein Rastersteuerelement der angemessenere Name Character auf der Seite angezeigt wird.
  var entryFieldValues = from entry in entries
  select new { Character=entry.Element(d + "Title").Value, 
               Actor=entry.Element(d + "Actor").Value, 
               CastingStatus=entry.Element(d + "CastingStatus").Value };

  1. Beenden Sie den Handler mit dem folgenden Code, um die Daten an ein GridView-Steuerelement auf der Seite zu binden. Die Spaltenüberschriften im Rastern werden auf die Eigenschaftsnamen des anonymen Typs Character, Actor und CastingStatus gesetzt. Das Steuerelement für die Rasteransicht verfügt über Eigenschaften, mit denen Sie die Spaltenüberschriften für den Namen und die Formatierung steuern können, sodass Actor/Actress und Casting Status den Spaltenüberschriften in SharePoint entsprechen. Der Einfachheit halber werden diese Techniken hier nicht beschrieben. (Sie können auch ein DataGrid-Steuerelement verwenden.)
    GridView1.DataSource = entryFieldValues;
    GridView1.DataBind();

  1. Speichern Sie alle Dateien.

So testen und debuggen Sie das SharePoint-Add-In

  1. Um das SharePoint-Add-In und die zugehörige Remote-Webanwendung zu testen, wählen Sie die Taste F5 in Visual Studio. Die Webanwendung wird für IIS Express unter localhost bereitgestellt. Das SharePoint-Add-In wird auf der SharePoint-Zielwebsite installiert. (Im fortlaufenden Beispiel versucht die Remote-Anwendung nicht, mit der Host-Website zu interagieren, und der Add-In-Prinzipal verfügt automatisch über Berechtigungen für die Add-In-Website, daher werden Sie nicht zum Erteilen von Berechtigungen aufgefordert.) Die Seite Websiteinhalt Ihrer SharePoint-Zielwebsite wird geöffnet, und das dort aufgeführte neue Add-In wird angezeigt.

  2. Wählen Sie das SharePoint-Add-In aus, und die Remote-Webanwendung öffnet die Seite, die Sie im StartPage-Element in der Datei AppManifest.xml angegeben haben. Verwenden Sie die Webanwendung nach Bedarf, um zu überprüfen, ob sie funktioniert. Im fortlaufenden Beispiel dieses Themas wählen Sie nur die Schaltfläche aus. Auf diese Weise wird ein Raster erstellt, das mit der Liste Characters in Hamlet des Add-In-Webs ausgefüllt wird.

Veröffentlichen des SharePoint-Add-Ins

Zum Veröffentlichen Ihres SharePoint-Add-Ins laden Sie das Add-In-Paket in einen Add-In-Katalog eines Unternehmens oder den Office-Add-In-Store. Weitere Informationen finden Sie unter Veröffentlichen im Office Store oder Add-In-Katalog eines Unternehmens und Veröffentlichen von SharePoint-Add-Ins.

Problembehandlung

Wenn das Add-In nicht funktioniert, sollten Sie überlegen, ob nicht ein Fehler im CAML-Markup die Bereitstellung der SharePoint-Komponenten blockiert. Verwenden Sie zum Überprüfen der Bereitstellung ein ähnliches Verfahren wie das folgende, das auf dem fortlaufenden Beispiel basiert.

So testen Sie die Bereitstellung des Add-In-Webs

  1. Öffnen Sie die Seite Websiteeinstellungen des Hostwebs. Klicken Sie im Abschnitt Websitesammlungsverwaltung auf den Link Websitehierarchie.

  2. Auf der Seite Websitehierarchie wird das Add-In nach seiner URL aufgeführt. Starten Sie es nicht. Kopieren Sie stattdessen die URL, und verwenden Sie die URL in den verbleibenden Schritten.

  3. Navigieren Sie zu URL_des_Add-In-Webs/_layouts/15/ManageFeatures.aspx und überprüfen Sie auf der sich öffnenden Seite Websitefeatures, ob Theater and Movie Data Components in der alphabetischen Liste der Features in Ihrem SharePoint-Add-In aufgeführt wird und der Status Aktiv ist.

  4. Navigieren Sie zu URL_des_Add-In-Webs/_layouts/15/mngfield.aspx, und überprüfen Sie auf der sich öffnenden Seite Websitespalten, ob eine Gruppe Theater and Movies in der Liste der Websitespalten vorhanden ist und ob sie Ihre neuen benutzerdefinierten Websitespalten, Actor/Actress und Casting Status, enthält.

  5. Navigieren Sie zu URL_des_Add-In-Webs/_layouts/15/mngctype.aspx, und überprüfen Sie auf der sich öffnenden Seite Websiteinhaltstypen, ob eine Gruppe Theater and Movies in der Liste der Inhaltstypen vorhanden ist und ob sie Ihren neuen Inhaltstyp ActingRole enthält.

  6. Wählen Sie den Link für den ActingRole-Inhaltstyp aus. Überprüfen Sie auf der sich öffnenden Seite Websiteinhaltstyp, ob der Inhaltstyp die zwei neuen Websitespaltentypen, Actor/Actress und Casting Status umfasst, und ob das Elementtitelfeld mit ihrem benutzerdefinierten Anzeigenamen benannt wurde: Character.

  7. Navigieren Sie zu URL_des_Add-In-Webs/_layouts/15/mcontent.aspx, und überprüfen Sie auf der sich öffnenden Seite Websitebibliotheken und -listen, ob ein Link „Characters in Hamlet“ anpassen vorhanden ist.

  8. Wählen Sie den Link „Characters in Hamlet“ anpassen aus, und überprüfen Sie auf der Seite der Listeneinstellungen, ob der einzige Inhaltstyp für diese Liste Ihr benutzerdefinierter Inhaltstyp ActingRole ist und ob Ihre zwei neuen Websitespalten, Actor/Actress und Casting Status, im Abschnitt Spalten aufgeführt werden. (Die Titelspalte wird möglicherweise mit ihrem internen Namen Titel anstatt mit dem von Ihnen angegebenen Anzeigenamen Character angezeigt.)

Hinweis

Wenn auf der Seite der Abschnitt Inhaltstypen nicht vorhanden ist, müssen Sie die Verwaltung von Inhaltstypen aktivieren. Klicken Sie auf den Link Erweiterte Einstellungen, und aktivieren Sie auf der Seite Erweiterte Einstellungen die Verwaltung von Inhaltstypen, und klicken Sie dann auf OK. Sie kehren zur vorherigen Seite zurück, wo nun eine Liste von Inhaltstyp-Abschnitten angezeigt wird.

  1. Im oberen Bereich der Seite befindet sich die Webadresse der Liste. Kopieren Sie diese, fügen Sie sie in die Adressleiste Ihres Browsers ein, und navigieren Sie dann zu der Liste. Überprüfen Sie, ob die Liste die erstellten Beispielelemente enthält. (Die Titelspalte wird möglicherweise mit ihrem internen Namen Titel anstatt mit dem von Ihnen angegebenen Anzeigenamen Character angezeigt.)

Siehe auch