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

WCF (Windows Communication Foundation) 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 usando 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 operativo, vedere Servizio AJAX senza configurazione.

Per una descrizione di come configurare un endpoint AJAX ASP.NET usando gli elementi di configurazione, vedere Procedura: Usare la configurazione per aggiungere un endpoint AJAX ASP.NET.

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 Calculator 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 usare 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 altre 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 nella raccolta degli script del controllo Script Manager ASP.NET AJAX. Per un esempio, vedere Servizio AJAX senza configurazione.

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 necessario è l'elemento <serviceHostingEnvironment>, che deve essere aggiunto come indicato di seguito.

<system.serviceModel>

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

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

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

Vedi anche