Invio del formForm Post

In questo esempio viene descritto come estendere il modello di programmazione WCF REST per supportare i nuovi formati delle richieste in entrata.This sample demonstrates how to extend the WCF REST programming model to support new incoming request formats. Nell'esempio è inoltre inclusa l'implementazione di un formattatore in grado di deserializzare una richiesta da un invio di form HTML in un tipo di .NET Framework.NET Framework.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. Nell'esempio viene infine usato un modello T4 per la restituzione di una pagina HTML, il quale fornisce il form HTML che gli utenti possono usare per eseguire il postback al servizio WCF REST.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.

DimostrazioneDemonstrates

  • Estensione del supporto per i formati delle richieste in entrata.Extending support for incoming request formats.

  • Integrazione di modelli T4.Integrating T4 templates.

DiscussioneDiscussion

L'esempio è costituito da due progetti.This sample consists of two projects. Il primo progetto è la libreria HtmlFormProcessing che include un formattatore di richieste personalizzato in grado di deserializzare invii di form HTML nei tipi di .NET Framework.NET Framework.One project is the HtmlFormProcessing library that includes a custom request formatter that can deserialize HTML form posts into .NET Framework.NET Framework types. Il secondo progetto è un'applicazione console che estende l'esempio relativo al servizio risorse di base per l'uso del formattatore di richieste personalizzato della libreria HtmlFormProcessing.The second project is a console application that extends the Basic Resource Service sample to use the custom request formatter of the HtmlFormProcessing library.

Il formattatore personalizzato in grado di deserializzare invii di form HTML (HtmlFormRequestDispatchFormatter) accetta entrambi i tipi di .NET Framework.NET Framework che possono essere convertiti da una stringa usando QueryStringConverter e i tipi contrassegnati con DataContractAttribute che dispongono esclusivamente di membri convertibili da una stringa tramite QueryStringConverter.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.

Nel progetto di libreria HtmlFormProcessing è inoltre inclusa una classe di base astratta, ovvero RequestBodyDispatchFormatter, che può essere usata per creare altri formattatori di richieste personalizzati.The HtmlFormProcessing library project also includes an abstract base class, RequestBodyDispatchFormatter, which can be used to create other custom request formatters. La derivazione da RequestBodyDispatchFormatter consente a uno sviluppatore di concentrarsi sulla logica di deserializzazione del corpo della richiesta, permettendo alla classe di base di eseguire il mapping dei parametri del modello di URI ai parametri del metodo dell'operazione.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. Nel progetto di libreria HtmlFormProcessing è inoltre inclusa la classe HtmlFormProcessingBehavior, che illustra come derivare da WebHttpBehavior per sostituire il formattatore di richieste predefinito con un formattatore di richieste personalizzato.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.

Questo progetto di applicazione console estende il servizio risorse di base esempio.This console application project extends the Basic Resource Service sample. Nell'esempio relativo al servizio risorse di base viene illustrato come esporre una risorsa in modo che venga usato il modello di programmazione WCF REST.The Basic Resource Service sample demonstrates how to expose a resource in a manner that uses the WCF REST programming model. Nell'esempio relativo al servizio risorse di base una risorsa raccolta di clienti viene esposta in modo tale che i clienti della raccolta possano essere creati, recuperati, aggiornati ed eliminati.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. Nell'esempio relativo al servizio risorse di base vengono usati esclusivamente due formati per le richieste in entrata supportati a livello nativo, ovvero XML e JSON.The Basic Resource Service sample only uses the two natively supported incoming request formats, XML and JSON.

L'applicazione console in questo esempio relativo all'invio di form usa il formattatore personalizzato incluso nella libreria HtmlFormProcessing che consente agli utenti di creare clienti inviando una richiesta da un invio di form HTML mediante un browser.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. Consente inoltre di aggiungere un'operazione che restituisce una pagina HTML in cui è incluso il form del quale eseguire il postback al servizio.It also adds an operation that returns an HTML page, which includes the form to be posted back to the service. Questa pagina HTML viene generata usando un modello T4 pre-elaborato costituito da un file con estensione tt e da un file con estensione cs generato automaticamente.This HTML page is generated using a preprocessed T4 template, which consists of a .tt file and an auto-generated .cs file. Il file con estensione tt consente a uno sviluppatore di scrivere una risposta in un form del modello contenente variabili e strutture di controllo.The .tt file allows a developer to write a response in a template form that contains variables and control structures. Per ulteriori informazioni su T4, vedere la generazione di elementi di modelli di testo.For more information about T4, see Generating Artifacts By Using Text Templates.

Per eseguire l'esempioTo run the sample

  1. Aprire la soluzione per l'esempio relativo all'invio del form.Open the solution for the Form Post Sample. Per garantire l'esecuzione corretta dell'esempio, è necessario avviare Visual Studio 2012Visual Studio 2012 come amministratore.When launching Visual Studio 2012Visual Studio 2012, you must run as an administrator to execute the sample successfully. Farlo facendo clic con il Visual Studio 2012Visual Studio 2012 icona e scegliere "Esegui come amministratore" dal menu di scelta rapida.Do this by right-clicking the Visual Studio 2012Visual Studio 2012 icon and choosing "Run as Administrator" from the context menu.

  2. Premere CTRL+MAIUSC+B per compilare la soluzione, quindi premere CTRL+F5 per eseguire il progetto di applicazione console FormPost.Press CTRL+SHIFT+B to build the solution and then press CTRL+F5 to run the console application FormPost project.

  3. Verrà visualizzata la finestra della console in cui saranno disponibili gli URI del servizio in esecuzione e della pagina della Guida HTML per il servizio in esecuzione.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. Durante l'esecuzione dell'esempio, il client scrive lo stato dell'attività corrente, qualora sia in corso l'aggiunta, l'aggiornamento o l'eliminazione di un cliente oppure il recupero di un elenco dei clienti correnti dal servizio nella finestra della console.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. Verrà quindi richiesto di passare all'URI del form dei clienti.You are then prompted to browse to the URI of the customer form. Aprire un browser e passare all'URI specificato.Open a browser and browse to the given URI. Digitare un nome e l'indirizzo per il cliente e fare clic su di Invia pulsante.Type in a name and address for the customer and click the Submit button.

  6. Premere un tasto qualsiasi per fare in modo che l'esempio continui a essere eseguito nella finestra della console.Press any key for the console window to continue running the sample.

  7. Durante il completamento dell'esempio, si noti che il cliente creato usando il browser è stato incluso nell'elenco finale di clienti.As the sample completes, notice that the customer you created using the browser is included in the final list of customers.

  8. Premere un tasto qualsiasi per terminare l'esempio.Press any key to terminate the sample.

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your machine. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.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) and WFWF samples. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

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