FormularbereitstellungForm Post

In diesem Beispiel wird veranschaulicht, wie das WCF-REST-Programmiermodell zur Unterstützung neuer Formate für eingehende Antworten erweitert wird.This sample demonstrates how to extend the WCF REST programming model to support new incoming request formats. Das Beispiel umfasst auch die Implementierung eines Formatierungsprogramms, mit dem eine Anforderung von einer HTML-Formularbereitstellung in einen .NET Framework.NET Framework-Typ deserialisiert werden kann.The sample also includes an implementation of a formatter that can deserialize a request from an HTML form post into a .NET Framework.NET Framework type. Im Beispiel wird außerdem eine T4-Vorlage verwendet, um eine HTML-Seite zurückzugeben. Sie stellt das HTML-Formular bereit, das die Benutzer an den WCF REST-Dienst zurücksenden können.In addition, the sample uses a T4 Template to return an HTML page, which provides the HTML form that users can post back to the WCF REST service.

VeranschaulichtDemonstrates

  • Erweitern der Unterstützung des Formats von eingehenden AnforderungenExtending support for incoming request formats.

  • Integrieren von T4-VorlagenIntegrating T4 templates.

DiskussionDiscussion

Dieses Beispiel besteht aus zwei Projekten.This sample consists of two projects. Ein Projekt ist die HtmlFormProcessing-Bibliothek. Sie enthält ein benutzerdefiniertes Formatierungsprogramm für Anforderungen, mit dem HTML-Formularbereitstellungen zu .NET Framework.NET Framework-Typen deserialisiert werden können.One project is the HtmlFormProcessing library that includes a custom request formatter that can deserialize HTML form posts into .NET Framework.NET Framework types. Das zweite Projekt ist eine Konsolenanwendung, mit der das Beispiel eines grundlegenden Ressourcendiensts dahingehend erweitert wird, dass ein benutzerdefiniertes Formatierungsprogramm für Anforderungen aus der HtmlFormProcessing-Bibliothek verwendet wird.The second project is a console application that extends the Basic Resource Service sample to use the custom request formatter of the HtmlFormProcessing library.

Das benutzerdefinierte Formatierungsprogramm kann HTML-Formularbereitstellungen (HtmlFormRequestDispatchFormatter) deserialisieren und akzeptiert beide .NET Framework.NET Framework-Typen, die mithilfe des QueryStringConverter und mit DataContractAttribute markierten Typen von einer Zeichenfolge konvertiert werden können. Dieses Attribut verfügt nur über Member, die mit dem QueryStringConverter von einer Zeichenfolge konvertiert werden können.The custom formatter that can deserialize HTML form posts (HtmlFormRequestDispatchFormatter) accepts both .NET Framework.NET Framework types that can be converted from a string using the QueryStringConverter and types marked with DataContractAttribute that only have members that can be converted from a string using the QueryStringConverter.

Das HtmlFormProcessing-Bibliotheksprojekt enthält außerdem eine abstrakte Basisklasse, RequestBodyDispatchFormatter, mit der andere benutzerdefinierte Anforderungsformatierungsprogramme erstellt werden können.The HtmlFormProcessing library project also includes an abstract base class, RequestBodyDispatchFormatter, which can be used to create other custom request formatters. Die Ableitung vom RequestBodyDispatchFormatter ermöglicht es Entwicklern, sich auf die Deserialisierungslogik des Anforderungstexts zu konzentrieren. Auf diese Weise können die URI-Vorlagenparameter von der Basisklasse den Methodenparametern des Vorgangs zugeordnet werden.Deriving from the RequestBodyDispatchFormatter allows a developer to focus on the request body deserialization logic, which allows the base class to map the URI template parameters to the operation’s method parameters. Im HtmlFormProcessing-Bibliothekprojekt befindet sich weiterhin die HtmlFormProcessingBehavior-Klasse, die veranschaulicht, wie vom WebHttpBehavior abgeleitet wird, um das Standardformatierungsprogramm für Anforderungen durch ein benutzerdefiniertes Formatierungsprogramm für Anforderungen zu ersetzen.Also in the HtmlFormProcessing library project is the HtmlFormProcessingBehavior class, which demonstrates how to derive from the WebHttpBehavior to replace the default request formatter with a custom request formatter.

Diese Konsolenanwendungsprojekt erweitert die grundlegenden Ressourcendiensts Beispiel.This console application project extends the Basic Resource Service sample. Im Beispiel eines grundlegenden Ressourcendiensts wird veranschaulicht, wie eine Ressource in einer Weise verfügbar gemacht wird, die das WCF REST-Programmiermodell verwendet.The Basic Resource Service sample demonstrates how to expose a resource in a manner that uses the WCF REST programming model. Im Beispiel eines grundlegenden Ressourcendiensts wird eine Kundenauflistungsressource so verfügbar gemacht, dass Kunden in der Auflistung erstellt, abgerufen, aktualisiert und gelöscht werden können.In the Basic Resource Service sample, a customer collection resource is exposed such that customers in the collection can be created, retrieved, updated and deleted. Im Beispiel eines grundlegenden Ressourcendiensts werden nur die zwei systemintern unterstützten, eingehenden Anforderungsformate XML und JSON verwendet.The Basic Resource Service sample only uses the two natively supported incoming request formats, XML and JSON.

Die Konsolenanwendung in diesem Beispiel zur Formularbereitstellung verwendet das benutzerdefinierte Formatierungsprogramm in der HtmlFormProcessing-Bibliothek, mit dem Benutzer Kunden erstellen können, indem sie über einen Browser eine Anfrage von einer HTML-Formularbereitstellung senden.The console application in this Form Post sample utilizes the custom formatter in the HtmlFormProcessing library, which allows users to create customers by sending a request from an HTML form post using a browser. Damit wird auch ein Vorgang hinzugefügt, mit dem eine HTML-Seite zurückgegeben wird. Dazu gehört u. a., dass das Formular an den Dienst zurückgesendet wird.It also adds an operation that returns an HTML page, which includes the form to be posted back to the service. Diese HTML-Seite wird mit einer vorverarbeiteten T4-Vorlage generiert, die aus einer TT-Datei und einer automatisch generierten CS-Datei besteht.This HTML page is generated using a preprocessed T4 template, which consists of a .tt file and an auto-generated .cs file. Die TT-Datei ermöglicht es Entwicklern, eine Antwort in ein Vorlagenformular zu schreiben, das Variablen und Steuerelementstrukturen enthält.The .tt file allows a developer to write a response in a template form that contains variables and control structures. Weitere Informationen finden Sie unterFor more information aboutT4 finden Sie unter Generieren von Artefakten mithilfe von Textvorlagen. T4, see Generating Artifacts By Using Text Templates.

So führen Sie das Beispiel ausTo run the sample

  1. Öffnen Sie die Projektmappe für das Beispiel zur Formularbereitstellung.Open the solution for the Form Post Sample. Sie müssen Visual Studio 2012Visual Studio 2012 als Administrator ausführen, damit das Beispiel erfolgreich ausgeführt werden kann.When launching Visual Studio 2012Visual Studio 2012, you must run as an administrator to execute the sample successfully. Zu diesem Zweck mit der rechten Maustaste die Visual Studio 2012Visual Studio 2012 Symbol "und"Als Administrator ausführen"aus dem Kontextmenü auswählen.Do this by right-clicking the Visual Studio 2012Visual Studio 2012 icon and choosing "Run as Administrator" from the context menu.

  2. Drücken Sie STRG+UMSCHALT+B, um die Projektmappe zu erstellen, und dann STRG+F5, um das FormPost-Konsolenanwendungsprojekt auszuführen.Press CTRL+SHIFT+B to build the solution and then press CTRL+F5 to run the console application FormPost project.

  3. Im eingeblendeten Konsolenfenster werden der URI des ausgeführten Diensts und der URI der HTML-Hilfeseite für den ausgeführten Dienst angezeigt.The console window appears and provides the URI of the running service and the URI of the HTML help page for the running service.

  4. Während das Beispiel ausgeführt wird, schreibt der Client den Status der aktuellen Aktivität in das Konsolenfenster, unabhängig davon, ob es sich dabei um das Hinzufügen, Aktualisieren oder Löschen eines Kunden oder das Abrufen einer Liste der aktuellen Kunden aus dem Dienst handelt.As the sample runs, the client writes the status of the current activity, whether it be adding a customer, updating a customer, deleting a customer or getting a list of current customers from the service to the console window.

  5. Sie werden aufgefordert, zum URI des Kundenformulars zu wechseln.You are then prompted to browse to the URI of the customer form. Öffnen Sie einen Browser, und wechseln Sie zum angegebenen URI.Open a browser and browse to the given URI. Geben Sie einen Namen und eine Adresse für den Kunden und klicken Sie auf die Absenden Schaltfläche.Type in a name and address for the customer and click the Submit button.

  6. Drücken Sie eine beliebige Taste, damit das Konsolenfenster das Beispiel weiterhin ausführt.Press any key for the console window to continue running the sample.

  7. Beachten Sie, dass nach Abschluss des Beispiels der von Ihnen über den Browser erstellte Kunde in der finalen Kundenliste enthalten ist.As the sample completes, notice that the customer you created using the browser is included in the final list of customers.

  8. Drücken Sie eine beliebige Taste, um das Beispiel zu beenden.Press any key to terminate the sample.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) - und WFWF -Beispiele herunterzuladen.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF)Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Extensibility\Web\FormPost