Procedura: aggiungere un endpoint ASP.NET AJAX senza usare la configurazioneHow to: Add an ASP.NET AJAX Endpoint Without Using Configuration

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.Windows Communication Foundation (WCF) allows you to create a service that exposes an ASP.NET AJAX-enabled endpoint that can be called from JavaScript on a client Web site. 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.To create such an endpoint, you can either use a configuration file, as with all other WCF endpoints, or use a method that does not require any configuration elements. In questo argomento viene illustrato il secondo approccio.This topic demonstrates the second approach.

Per creare servizi con endpoint ASP.NET AJAX senza configurazione, i servizi devono essere ospitati da Internet Information Services (IIS).To create services with ASP.NET AJAX endpoints without configuration, the services must be hosted by Internet Information Services (IIS). Per attivare un endpoint ASP.NET AJAX, questo approccio, specificare il WebScriptServiceHostFactory come parametro nella Factory di @ServiceHost direttiva nel file con estensione svc.To activate an ASP.NET AJAX endpoint using this approach, specify the WebScriptServiceHostFactory as the Factory parameter in the @ServiceHost directive in the .svc file. 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.This custom factory is the component that automatically configures an ASP.NET AJAX endpoint so that it can be called from JavaScript on a client Web site.

Per un esempio funzionante, vedere il AJAX senza configurazione del servizio.For a working example, see the AJAX Service Without Configuration.

Per un riepilogo di come configurare un endpoint ASP.NET AJAX tramite elementi di configurazione, vedere procedura: utilizzare la configurazione per aggiungere un Endpoint ASP.NET AJAX.For an outline of how to configure an ASP.NET AJAX endpoint using configuration elements, see How to: Use Configuration to Add an ASP.NET AJAX Endpoint.

Per creare un servizio WFC di baseTo create a basic WCF service

  1. Definire un contratto di servizio WCF base con un'interfaccia contrassegnata con il ServiceContractAttribute attributo.Define a basic WCF service contract with an interface marked with the ServiceContractAttribute attribute. Contrassegnare ogni operazione con OperationContractAttribute.Mark each operation with the OperationContractAttribute. Assicurarsi di impostare la proprietà Namespace.Be sure to set the Namespace property.

    [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.Implement the ICalculator service contract with a 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.Define a namespace for the ICalculator and CalculatorService implementations by wrapping them in a namespace block.

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

Per ospitare il servizio in Internet Information Services senza configurazioneTo host the service in Internet Information Services without configuration

  1. Creare un nuovo file denominato "file del servizio" con estensione svc nell'applicazione.Create a new file named service with a .svc extension in the application. Modificare il file aggiungendo appropriata @ServiceHost informazioni direttive per il servizio.Edit this file by adding the appropriate @ServiceHost directive information for the service. Specificare che il WebScriptServiceHostFactory deve essere usata nel @ServiceHost direttiva per configurare automaticamente un endpoint ASP.NET AJAX.Specify that the WebScriptServiceHostFactory is to be used in the @ServiceHost directive to automatically configure an ASP.NET AJAX endpoint.

    <%@ServiceHost   
        language=c#   
        Debug="true"   
        Service="Microsoft.Ajax.Samples.CalculatorService"  
        Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory  
    %>  
    
  2. Generare il servizio e chiamarlo dal client.Build the service and call it from the client. Internet Information Services (IIS) attiva il servizio quando viene chiamato.Internet Information Services (IIS) activates the service when called. Per ulteriori informazioni sull'hosting in IIS, vedere procedura: ospitare un servizio WCF in IIS.For more information about hosting in IIS, see How to: Host a WCF Service in IIS.

Per chiamare il servizioTo call the service

  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 il Add operazione.The endpoint is configured at an empty address relative to the .svc file, so the service is now available and can be invoked by sending requests to service.svc/<operation> - for example, service.svc/Add for the Add operation. È possibile utilizzarlo immettendo l'URL del servizio nella raccolta degli script del controllo Script Manager ASP.NET AJAX.You can use it by entering the service URL into the Scripts collection of the ASP.NET AJAX Script Manager control. Per un esempio, vedere il AJAX senza configurazione del servizio.For an example, see the AJAX Service Without Configuration.

EsempioExample

L'endpoint configurato automaticamente viene creato in un indirizzo vuoto relativo all'URL di base.The automatically-configured endpoint is created at an empty address relative to the base URL. Può essere aggiunto e utilizzato con questo approccio anche un file di configurazione.A configuration file can also be added and used with this approach. Se il file di configurazione contiene definizioni di endpoint, questi endpoint vengono aggiunti all'endpoint configurato automaticamente.If the configuration file contains endpoint definitions, these endpoints are added to the automatically-configured endpoint.

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".For example, service.svc uses the WebScriptServiceHostFactory and the service directory contains a Web.config file that defines an endpoint for the same service using the BasicHttpBinding at the "soap" relative address. 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.In this case, the service contains two endpoints: one at service.svc (which responds to ASP.NET AJAX requests) and another at service.svc/soap (which responds to SOAP requests).

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.If the configuration file defines an endpoint at an empty relative address and the WebScriptServiceHostFactory is used, an exception is thrown and the service fails to start.

Non è possibile utilizzare la configurazione per modificare impostazioni sull'endpoint configurato automaticamente.You cannot use configuration to modify settings on the automatically-configured endpoint. 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.If any setting (such as a reader quota) must be modified, you must not use the configuration-free approach by removing the WebScriptServiceHostFactory from the .svc file and creating a configuration entry for the 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à.If your service requires ASP.NET Compatibility Mode - for example, if it uses the HttpContext class or ASP.NET authorization mechanisms - a configuration file is still required to turn on this mode. L'elemento di configurazione richiesto è il <serviceHostingEnvironment > elemento che deve essere aggiunto come indicato di seguito.The configuration element required is the <serviceHostingEnvironment> element, which must be added as follows.

<system.serviceModel>

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

Per altre informazioni, vedere la servizi WCF e ASP.NET argomento.For more information, see the WCF Services and ASP.NET topic.

La classe WebScriptServiceHostFactory è una classe derivata di ServiceHostFactory.The WebScriptServiceHostFactory class is a derived class of ServiceHostFactory. Per una spiegazione dettagliata del meccanismo di factory host del servizio, vedere il estensione Hosting tramite ServiceHostFactory argomento.For a detailed explanation of the service host factory mechanism, see the Extending Hosting Using ServiceHostFactory topic.

Vedere ancheSee Also

Creazione di servizi WCF per ASP.NET AJAXCreating WCF Services for ASP.NET AJAX
Procedura: Eseguire la migrazione di servizi Web ASP.NET abilitati AJAX in WCFHow to: Migrate AJAX-Enabled ASP.NET Web Services to WCF