Freigeben über


Korrigieren von InfoPath-Formularen in Sandboxlösungen

Wenn Sie InfoPath-Formulare mit CodeBehind verwenden, sind die Formulare von codebasierten Sandkastenlösungen für die Ausführung des CodeBehind abhängig. In diesem Artikel können Sie Ihre InfoPath-Formulare entweder korrigieren oder transformieren, sodass sie nicht mehr von Sandboxlösungen abhängig sind.

Hinweis

Codebasierte Sandkastenlösungen sind seit 2014 veraltet, und in SharePoint Online wird diese Funktion Zug um Zug vollständig entfernt. Codebasierte Sandkastenlösungen sind auch in SharePoint 2013 und SharePoint 2016 veraltet.

Analysieren Von InfoPath-Formularen

In diesem Abschnitt wird ein Modell beschrieben, mit dem Sie Ihre InfoPath-Formulare analysieren und beheben können. Je nach Formular können Sie das Formular entweder korrigieren und erneut bereitstellen, oder Sie müssen von InfoPath weggehen und einen alternativen Ansatz verwenden, um die benötigten Funktionen zu erhalten.

Bevor Sie Maßnahmen ergreifen, ist es wichtig, dass Sie den geschäftlichen Bedarf für Ihr Formular bewerten. Wir sehen oft viele Formulare, die nicht mehr geschäftsrelevant sind, und in diesen Fällen ist es einfacher, das Formular einfach zu löschen.

Ermitteln, ob Ihre InfoPath-Formulare CodeBehind verwenden

Um dies zu ermitteln, empfiehlt es sich, das SharePoint SandBox Solution-Scannertool zu verwenden. Der Bericht dieses Tools gibt an, ob die Sandboxlösung aus einer InfoPath-Datei stammt. Das Tool teilt Ihnen auch mit, ob die in der Lösung verwendete Assembly nutzlos ist, wie weiter unten in diesem Artikel beschrieben.

Ermitteln, ob Ihre Formulare noch relevant sind

Bevor Sie sich mit der Wartung/Transformation befassen, ist es wichtig, dass Sie bestimmen, ob das Formular für Ihr Unternehmen weiterhin von entscheidender Bedeutung ist. Wenn ja, fahren Sie mit dem nächsten Abschnitt fort. Andernfalls müssen Sie über die daten nachdenken, die mit diesem Formular erstellt wurden.

In der Regel wurden die Daten als InfoPath-XML-Dateien erstellt, die sich in einer SharePoint-Liste befinden. Wenn Sie das Formular entfernen, können Sie die Daten nicht mehr visualisieren. Manchmal ist das in Ordnung, da das Formular und die Daten nicht mehr relevant sind. Wenn Sie jedoch auf die Daten zugreifen möchten, können Sie die Daten aus den InfoPath-XML-Dateien in SharePoint-Listenelementedaten konvertieren. Informationen hierzu finden Sie in der PnP-Transformation EmpRegConsole-Konsolenanwendung.

Herunterladen der InfoPath-Formulare (XSN-Datei) zur Überprüfung

Wenn Sie bestätigt haben, dass Sie über InfoPath-Formulare verfügen, die Arbeit erfordern, müssen Sie diese Formulare herunterladen. InfoPath-Formulare mit CodeBehind werden entweder als Formularbibliothek oder Websiteinhaltstyp bereitgestellt.

Formularbibliothek

In diesem Fall befindet sich die XSN-Datei im Ordner Forms der Formularbibliothek, in der das InfoPath-Formular bereitgestellt wurde. Um die Formularbibliothek zu finden, sehen Sie sich den WSP-Paketnamen an, der dieser Konvention folgt: InfoPath Form_LibName_id.

Nachdem Sie die Formularbibliothek kennen, müssen Sie die Datei template.xsn aus dem Ordner Forms der Bibliothek herunterladen. Dazu können Sie eine URL wie diese erstellen, Bibliotheks-URL + /Forms/template.xsn (z. B. ) https://contoso.sharepoint.com/sites/infopath1/IHaveCodeBehind/Forms/template.xsnund den Browser zum Herunterladen der Datei verwenden.

Websiteinhaltstyp

Bei InfoPath-Formularen, die als Websiteinhaltstyp bereitgestellt werden, wird die XSN-Datei in einer Formularbibliothek gespeichert, die zum Zeitpunkt der Formularbereitstellung mit dem Inhaltstyp verbunden war. Wie im vorherigen Abschnitt können Sie den Bibliotheksnamen aus dem WSP-Paketnamen abrufen. Was dieses Mal anders ist, ist, dass das Formular tatsächlich als Datei in der Bibliothek gespeichert ist, sodass Sie es einfach aus der Formularbibliothek herunterladen können.

Korrigieren Ihrer InfoPath-Formulare

In den vorherigen Abschnitten wurden die InfoPath-Formulare mit CodeBehind gezeigt, aber enthalten diese Formulare tatsächlich nützliches CodeBehind? Es gibt viele Formulare, für die der Formularautor versehentlich die Schaltfläche Code-Editor im InfoPath Developer-Menüband ausgewählt hat.

InfoPath-CodeBehind

Wenn Sie dies getan haben, haben Sie möglicherweise CodeBehind, der nichts tut. Indem Sie es entfernen, können Sie Ihr InfoPath-Formular mit CodeBehind in ein InfoPath-Formular ohne CodeBehind und ohne Abhängigkeit von Sandboxlösungen konvertieren.

Ermitteln, ob der CodeBehind ihrer Formulare nutzlos ist

Der SharePoint-Sandbox-Lösungsscanner teilt Ihnen mit, ob Ihr InfoPath-Formular über nutzlosen Code verfügt. Sie fragen sich jedoch vielleicht, wie Sie zwischen nutzlosem und notwendigem CodeBehind unterscheiden können, da Sie nur nutzlosen Code beheben können. Wenn Sie noch über das ursprüngliche Formular verfügen (nicht das Formular, das Sie in den vorherigen Schritten heruntergeladen haben), können Sie sich einfach den Code ansehen.

Es folgt der leere Standardcode, und wenn Ihr Code ähnlich ist, kann das Formular korrigiert werden, indem Sie den Code löschen.

using Microsoft.Office.InfoPath;
using System;
using System.Xml;
using System.Xml.XPath;

namespace Form1
{
    public partial class FormCode
    {
        // Member variables are not supported in browser-enabled forms.
        // Instead, write and read these values from the FormState
        // dictionary using code such as the following:
        //
        // private object _memberVariable
        // {
        //     get
        //     {
        //         return FormState["_memberVariable"];
        //     }
        //     set
        //     {
        //         FormState["_memberVariable"] = value;
        //     }
        // }

        // NOTE: The following procedure is required by Microsoft InfoPath.
        // It can be modified using Microsoft InfoPath.
        public void InternalStartup()
        {
        }
    }
}

Falls Sie nur über die XSN-Datei verfügen, die Sie im vorherigen Schritt heruntergeladen haben, können Sie Ihre XSN-Datei in eine CAB-Datei umbenennen (z. B. template.cab), die Assembly extrahieren und .NET-Reflektionstools (z. B. den ILSpy Open-Source-.NET-Assemblybrowser und -Dekompiler) verwenden, um den Code zu untersuchen.

Eine typische Ansicht von nutzlosem CodeBehind sieht wie die folgende Abbildung in ILSpy aus.

Nutzloser Code, wie in ILSpy zu sehen

Löschen von CodeBehind aus InfoPath-Formularen, um sie zu beheben

Wenn Sie bestätigt haben, dass Ihr CodeBehind nutzlos ist, können Sie ihn wie folgt löschen:

  1. Öffnen Sie das Formular in InfoPath Designer (klicken Sie mit der rechten Maustaste auf Entwurf).

  2. Wechseln Sie zu Dateiinformationsformularoptionen>>.

  3. Wählen Sie die Kategorie Programmierung und dann Code entfernen aus.

  4. Veröffentlichen Sie das Formular erneut unterDateiinformationen>>Schnellveröffentlichung.

  5. Deaktivieren Sie die verknüpfte Sandkastenlösung unter Lösungen für Websiteeinstellungen>.

  6. Vergewissern Sie sich, dass das Formular wie erwartet funktioniert.

  7. Löschen Sie die Sandboxlösung.

Hinweis

Wenn Sie keinen Zugriff mehr auf die InfoPath-XSN-Datei und den Quellcode haben, können Sie diese Formulare trotzdem beheben, indem Sie die Sandkastenlösungen deaktivieren, die nutzlosen Code enthalten. Dies gilt nur für diejenigen, die in der Berichtausgabe der Sandboxlösung mit IsEmptyInfoPathAssembly = true erwähnt werden.

Migrieren Von InfoPath-Formularen

Wenn die Anleitung in den vorherigen Abschnitten nicht auf Ihre InfoPath-Formulare anwendbar war, bedeutet dies, dass Ihre Formulare weiterhin geschäftsrelevant sind und CodeBehind enthalten, den Sie nicht löschen können. Wenn dies der Fall ist, besteht die typische Lösung darin, sich von InfoPath zu entfernen, was auf folgende Weise erfolgen kann:

  • Erstellen Sie ein SharePoint-Add-In, das Remote-APIs zum Lesen/Schreiben von SharePoint-Daten nutzt.

  • Erstellen Sie eine App mithilfe von Azure PowerApps oder Microsoft Flow.

    Azure PowerApps und Microsoft Flow

Erstellen von SharePoint-Add-Ins zum Ersetzen Ihrer InfoPath-Formulare

Wenn Sie sharePoint Add-Ins verwenden, um Ihre InfoPath-Formulare zu ersetzen, haben Sie mehrere Optionen. Im Folgenden sind drei Optionen aufgeführt: Sie können jedoch Variationen dieser Verwenden.

Allgemeine InfoPath-Codierungsmuster

Um Sie beim Konvertieren Ihres InfoPath-Formulars besser zu unterstützen, finden Sie im Folgenden eine Liste von 11 allgemeinen InfoPath-Codierungsmustern und wie Sie diese Muster mithilfe der drei SharePoint-Add-In-Optionen implementieren können.

Dazu haben wir zunächst ein InfoPath-Referenzformular entwickelt, das die gängigsten InfoPath-Codierungsmuster verwendet. Anschließend haben wir dieses Formular zu drei SharePoint-Add-In-Varianten migriert.

Die folgenden Links zeigen diese gängigen Muster:

Migrieren Ihrer InfoPath-Daten

Nachdem Sie Ihre InfoPath-Formulare in eine neue Lösung verschoben haben, können Sie ihre Daten auch von InfoPath XML zu regulären SharePoint-Listendaten oder zur Datenebene Ihrer Wahl migrieren. Da Es sich bei InfoPath-Dateien um XML-Dateien handelt, ist es ziemlich einfach, sie zu lesen und zu transformieren.

Verwenden Sie dazu die PnP-Transformation EmpRegConsole-Konsolenanwendung.

Öffnen vorhandener Formulare

Sobald codebasierte Vorgänge deaktiviert sind, kann Code nicht mehr in der Sandbox ausgeführt werden. Wenn Sie also über Formulare verfügen, die Code ausführen, funktioniert das Öffnen der vorhandenen Formulare nicht mehr.

Die folgenden Schritte können Ihnen dabei helfen:

  • Wenn Sie Ihr InfoPath-Formular zu einer neuen Lösung migriert haben, haben Sie ihre Daten höchstwahrscheinlich bereits konvertiert, und wenn ja, sind Sie gut.

  • Wenn Sie das Formular unverändert beibehalten möchten (z. B. weil es nicht mehr geschäftsrelevant ist), aber dennoch die vorhandenen Formulare öffnen möchten, können Sie eine der folgenden Aktionen ausführen:

Siehe auch