Servizio AJAX con il protocollo HTTP POSTAJAX Service Using HTTP POST

Questo esempio viene illustrato come utilizzare Windows Communication Foundation (WCF) per creare un ASP.NETASP.NET servizio Asynchronous JavaScript and XML (AJAX) che utilizza HTTP POST.This sample demonstrates how to use Windows Communication Foundation (WCF) to create an ASP.NETASP.NET Asynchronous JavaScript and XML (AJAX) service that uses HTTP POST. È possibile accedere a questo servizio utilizzando il codice JavaScript di base da un client del browser Web.An AJAX service is one that you can access by using basic JavaScript code from a Web browser client. In questo esempio si basa il servizio AJAX di base esempio; l'unica differenza tra i due esempi è l'utilizzo di HTTP POST invece di HTTP GET.This sample builds on the Basic AJAX Service sample; the only difference between the two samples is the use of HTTP POST instead of HTTP GET.

Supporto AJAX in Windows Communication Foundation (WCF) è ottimizzato per l'uso con ASP.NET AJAX tramite il ScriptManager controllo.AJAX support in Windows Communication Foundation (WCF) is optimized for use with ASP.NET AJAX through the ScriptManager control. Per un esempio dell'utilizzo di WCF con ASP.NET AJAX, vedere la esempi Ajax.For an example of using WCF with ASP.NET AJAX, see the Ajax Samples.

Nota

La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine di questo argomento.The setup procedure and build instructions for this sample are located at the end of this topic.

Il servizio nell'esempio seguente è un servizio WCF senza codice specifico per AJAX.The service in the following sample is a WCF service with no AJAX-specific code.

Se il WebInvokeAttribute in un'operazione, viene applicato l'attributo o WebGetAttribute non viene applicato l'attributo, viene utilizzato il verbo HTTP predefinito ("POST").If the WebInvokeAttribute attribute is applied on an operation, or the WebGetAttribute attribute is not applied, the default HTTP verb ("POST") is used. Le richieste POST sono più difficili da costruire rispetto alle richieste GET, ma non vengono memorizzate nella cache; utilizzare le richieste POST per tutte le operazioni in cui la memorizzazione nella cache non è appropriata.POST requests are harder to construct than GET requests, but they are not cached; use POST requests for all operations where caching is not appropriate.

[ServiceContract(Namespace = "PostAjaxService")]  
public interface ICalculator  
{
    [WebInvoke]  
    double Add(double n1, double n2);  
    //Other operations omitted…  
}

Creare un endpoint AJAX sul servizio utilizzando WebScriptServiceHostFactory, proprio come nell'esempio del servizio AJAX di base.Create an AJAX endpoint on the service by using the WebScriptServiceHostFactory, just as in the Basic AJAX Service sample.

A differenza delle richieste GET, non è possibile richiamare servizi POST dal browser.Unlike GET requests, you cannot invoke POST services from the browser. Ad esempio, il passaggio a http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 genera un errore, poiché il servizio POST si aspetta la n1 e n2 parametri da inviare nel corpo del messaggio, ovvero nel formato JSON e non nell'URL.For example, navigating to http://localhost/ServiceModelSamples/service.svc/Add?n1=100&n2=200 results in an error, because the POST service expects the n1 and n2 parameters to be sent in the message body—in the JSON format—and not in the URL.

La pagina Web PostAjaxClientPage.aspx del client contiene il codice ASP.NET per richiamare il servizio ogni qualvolta che l'utente fa clic su uno dei pulsanti di operazione nella pagina.The client Web page PostAjaxClientPage.aspx contains ASP.NET code to invoke the service whenever the user clicks one of the operation buttons on the page. Il servizio risponde esattamente come nel servizio AJAX di base esempio, con la richiesta di recupero.The service responds in the same way as in the Basic AJAX Service sample, with the GET request.

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your computer. 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\Basic\Ajax\PostAjaxService

Per impostare, compilare ed eseguire l'esempioTo set up, build, and run the sample

  1. Assicurarsi di eseguire le istruzioni di installazione procedura di installazione singola per gli esempi di Windows Communication Foundation.Ensure that you perform the setup instructions One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Compilare la soluzione PostAjaxService.sln, come descritto in compilazione degli esempi di Windows Communication Foundation.Build the solution PostAjaxService.sln as described in Building the Windows Communication Foundation Samples.

  3. Passare a http://localhost/ServiceModelSamples/PostAjaxClientPage.aspx (non aprire postajaxclientpage. aspx nel browser dalla directory del progetto).Navigate to http://localhost/ServiceModelSamples/PostAjaxClientPage.aspx (do not open PostAjaxClientPage.aspx in the browser from the project directory).

Vedere ancheSee Also