Procedura: aggiungere un endpoint ASP.NET AJAX senza utilizzare la configurazione

Windows Communication Foundation (WCF) consente di creare un servizio che espone un endpoint ASP.NET compatibile con AJAX che può essere chiamato da JavaScript su un sito Web client. Per creare tale endpoint è possibile utilizzare un file di configurazione, come con tutti gli altri endpoint WCF, o un metodo che non richiede elementi di configurazione. In questo argomento viene illustrato il secondo approccio.

Per creare servizi con endpoint ASP.NET AJAX senza configurazione, i servizi devono essere ospitati da Internet Information Services (IIS). Per attivare un endpoint ASP.NET AJAX utilizzando questo approccio, specificare WebScriptServiceHostFactory come parametro Factory nella direttiva @ServiceHost nel file con estensione svc. Questa factory personalizzata è il componente che configura automaticamente un endpoint ASP.NET AJAX, in modo che possa essere chiamato da JavaScript su un sito Web client.

Per un esempio funzionante, vedere AJAX Service Without Configuration sample.

Per una descrizione di come configurare un endpoint ASP.NET AJAX utilizzando elementi di configurazione, vedere Procedura: aggiungere un endpoint ASP.NET AJAX con l'utilizzo della configurazione.

Per creare un servizio WFC di base

  1. Definire un contratto di servizio WCF di base con un'interfaccia contrassegnata con l'attributo ServiceContractAttribute. Contrassegnare ogni operazione con OperationContractAttribute. Assicurarsi di impostare la proprietà Namespace.

    [ServiceContract(Namespace = "MyService")]]
    public interface ICalculator
    {
        [OperationContract]
        // This operation returns the sum of d1 and d2.
        double Add(double n1, double n2);
    
        //Other operations omitted…
    
    }
    
  2. Implementare il contratto di servizio ICalculator con CalculatorService.

    public class CalculatorService : ICalculator
    {
        public double Add(double n1, double n2)
        {
            return n1 + n2;
        }
    
    //Other operations omitted…
    
  3. Definire uno spazio dei nomi per le implementazioni ICalculator e CalculatorService eseguendo il wrapping di queste ultime in un blocco dello spazio dei nomi.

    Namespace Microsoft.Ajax.Samples
    {
        //Include the code for ICalculator and Caculator here.
    }
    

Per ospitare il servizio in Internet Information Services senza configurazione

  1. Creare un nuovo file denominato "file del servizio" con estensione svc nell'applicazione. Modificare questo file aggiungendo le informazioni della direttiva @ServiceHost appropriate per il servizio. Specificare che è necessario utilizzare WebScriptServiceHostFactory nella direttiva @ServiceHost per configurare automaticamente un endpoint ASP.NET AJAX.

    <%@ServiceHost 
        language=c# 
        Debug="true" 
        Service="Microsoft.Ajax.Samples.CalculatorService"
        Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory
    %>
    
  2. Generare il servizio e chiamarlo dal client. Internet Information Services (IIS) attiva il servizio quando viene chiamato. Per ulteriori informazioni sull'hosting in IIS, vedere Procedura: ospitare un servizio WCF in IIS.

Per chiamare il servizio

  1. L'endpoint è configurato in un indirizzo vuoto relativo al file con estensione svc, pertanto il servizio è ora disponibile e può essere richiamato inviando richieste a service.svc/<operazione>; ad esempio, service.svc/Add per l'operazione Add. È possibile utilizzarlo immettendo l'URL del servizio nell'insieme degli script del controllo Script Manager ASP.NET AJAX. Per un esempio, vedere AJAX Service Without Configuration sample.

Esempio

L'endpoint configurato automaticamente viene creato in un indirizzo vuoto relativo all'URL di base. Può essere aggiunto e utilizzato con questo approccio anche un file di configurazione. Se il file di configurazione contiene definizioni di endpoint, questi endpoint vengono aggiunti all'endpoint configurato automaticamente.

Ad esempio, service.svc utilizza WebScriptServiceHostFactory e la directory del servizio contiene un file Web.config che definisce un endpoint per lo stesso servizio utilizzando BasicHttpBinding nell'indirizzo relativo "soap". In questo caso, il servizio contiene due endpoint: uno in service.svc, che risponde alle richieste ASP.NET AJAX, e un altro in service.svc/soap, che risponde alle richieste SOAP.

Se il file di configurazione definisce un endpoint in un indirizzo relativo vuoto e viene utilizzata la classe WebScriptServiceHostFactory, viene generata un'eccezione e il servizio non viene avviato.

Non è possibile utilizzare la configurazione per modificare impostazioni sull'endpoint configurato automaticamente. Se è necessario modificare un'impostazione, quale la quota del lettore, non si deve utilizzare l'approccio senza configurazione rimuovendo WebScriptServiceHostFactory dal file con estensione svc e creando una voce di configurazione per l'endpoint.

Se il servizio richiede la modalità di compatibilità ASP.NET, se ad esempio utilizza la classe HttpContext o meccanismi di autorizzazione ASP.NET, è comunque necessario un file di configurazione per attivare questa modalità. L'elemento di configurazione richiesto è l'elemento <serviceHostingEnvironment>, che deve essere aggiunto come segue.

<system.serviceModel>

<serviceHostingEnvironment aspNetCompatibilityEnabled=”true” /> </system.serviceModel>

Per ulteriori informazioni, vedere l'argomento Servizi WCF e ASP.NET.

La classe WebScriptServiceHostFactory è una classe derivata di ServiceHostFactory. Per una spiegazione dettagliata del meccanismo factory di host del servizio, vedere l'argomento Estensione dell'hosting tramite ServiceHostFactory.

Vedere anche

Attività

Procedura: eseguire la migrazione di servizi Web ASP.NET compatibili AJAX a WCF

Concetti

Creazione di servizi WCF per ASP.NET AJAX