Delen via


Procedure: Een ASP.NET AJAX-eindpunt toevoegen zonder configuratie te gebruiken

Met Windows Communication Foundation (WCF) kunt u een service maken waarmee een ASP.NET AJAX-eindpunt wordt weergegeven dat kan worden aangeroepen vanuit JavaScript op een clientwebsite. Als u een dergelijk eindpunt wilt maken, kunt u een configuratiebestand gebruiken, net als bij alle andere WCF-eindpunten, of een methode gebruiken waarvoor geen configuratie-elementen zijn vereist. In dit onderwerp wordt de tweede benadering gedemonstreert.

Als u services wilt maken met ASP.NET AJAX-eindpunten zonder configuratie, moeten de services worden gehost door Internet Information Services (IIS). Als u een ASP.NET AJAX-eindpunt wilt activeren met deze methode, geeft u de WebScriptServiceHostFactory parameter Factory op in de @ServiceHost-instructie in het .svc-bestand. Deze aangepaste factory is het onderdeel dat automatisch een ASP.NET AJAX-eindpunt configureert, zodat het kan worden aangeroepen vanuit JavaScript op een clientwebsite.

Zie de AJAX-service zonder configuratie voor een werkend voorbeeld.

Zie Configuratie gebruiken om een ASP.NET AJAX-eindpunt toe te voegen voor een overzicht van het configureren van een ASP.NET AJAX-eindpunt met behulp van configuratie-elementen.

Een eenvoudige WCF-service maken

  1. Definieer een eenvoudig WCF-servicecontract met een interface die is gemarkeerd met het ServiceContractAttribute kenmerk. Markeer elke bewerking met de OperationContractAttribute. Zorg ervoor dat u de Namespace eigenschap instelt.

    [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. Implementeer het ICalculator servicecontract met een CalculatorService.

    public class CalculatorService : ICalculator  
    {  
        public double Add(double n1, double n2)  
        {  
            return n1 + n2;  
        }  
    
    //Other operations omitted…  
    
  3. Definieer een naamruimte voor de ICalculator en CalculatorService implementaties door deze in een naamruimteblok te verpakken.

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

De service hosten in Internet Information Services zonder configuratie

  1. Maak een nieuw bestand met de naam service met de extensie .svc in de toepassing. Bewerk dit bestand door de juiste @ServiceHost instructiegegevens voor de service toe te voegen. Geef op dat het WebScriptServiceHostFactory moet worden gebruikt in de @ServiceHost instructie om automatisch een ASP.NET AJAX-eindpunt te configureren.

    <%@ServiceHost
        language=c#
        Debug="true"
        Service="Microsoft.Ajax.Samples.CalculatorService"  
        Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory  
    %>  
    
  2. Bouw de service en roep deze aan vanaf de client. Internet Information Services (IIS) activeert de service wanneer deze wordt aangeroepen. Zie How to: Host a WCF Service in IIS (Een WCF-service hosten in IIS) voor meer informatie over hosting in IIS.

De service aanroepen

  1. Het eindpunt is geconfigureerd op een leeg adres ten opzichte van het .svc-bestand, zodat de service nu beschikbaar is en kan worden aangeroepen door aanvragen te verzenden naar service.svc/<operation> , bijvoorbeeld service.svc/Add voor de Add bewerking. U kunt deze gebruiken door de service-URL in te voeren in de verzameling Scripts van het besturingselement ASP.NET AJAX Script Manager. Zie de AJAX-service zonder configuratie voor een voorbeeld.

Opmerking

Het automatisch geconfigureerde eindpunt wordt gemaakt op een leeg adres ten opzichte van de basis-URL. Er kan ook een configuratiebestand worden toegevoegd en gebruikt met deze methode. Als het configuratiebestand eindpuntdefinities bevat, worden deze eindpunten toegevoegd aan het automatisch geconfigureerde eindpunt.

Service.svc gebruikt bijvoorbeeld de WebScriptServiceHostFactory servicemap en bevat een Web.config-bestand dat een eindpunt definieert voor dezelfde service met behulp van het BasicHttpBinding relatieve adres 'soap'. In dit geval bevat de service twee eindpunten: één bij service.svc (die reageert op ASP.NET AJAX-aanvragen) en een andere bij service.svc/soap (die reageert op SOAP-aanvragen).

Als het configuratiebestand een eindpunt definieert op een leeg relatief adres en het WebScriptServiceHostFactory wordt gebruikt, wordt er een uitzondering gegenereerd en kan de service niet worden gestart.

U kunt de configuratie niet gebruiken om instellingen op het automatisch geconfigureerde eindpunt te wijzigen. Als een instelling (zoals een lezerquotum) moet worden gewijzigd, moet u de configuratievrije benadering niet gebruiken door het WebScriptServiceHostFactory .svc-bestand te verwijderen en een configuratievermelding voor het eindpunt te maken.

Als uw service ASP.NET compatibiliteitsmodus vereist, bijvoorbeeld als deze gebruikmaakt van de HttpContext klasse of ASP.NET autorisatiemechanismen, is er nog steeds een configuratiebestand vereist om deze modus in te schakelen. Het vereiste configuratie-element is het <element serviceHostingEnvironment> , dat als volgt moet worden toegevoegd.

<system.serviceModel>

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

Zie het onderwerp WCF-services en ASP.NET voor meer informatie.

De WebScriptServiceHostFactory klasse is een afgeleide klasse van ServiceHostFactory. Zie het onderwerp Extending Hosting Using ServiceHostFactory voor een gedetailleerde uitleg van het mechanisme van de servicehostfactory .

Zie ook