Partager via


Comment : ajouter un point de terminaison AJAX ASP.NET sans utiliser de configuration

Windows Communication Foundation (WCF) vous permet de créer un service qui expose un point de terminaison activé ASP.NET AJAX pouvant être appelé à partir de JavaScript sur un site Web client. Pour créer ce point de terminaison, vous pouvez utiliser un fichier de configuration, comme pour tous les autres points de terminaison WCF, ou utiliser une méthode qui ne requiert aucun élément de configuration. Cette rubrique décrit la deuxième approche.

Pour créer des services avec les points de terminaison ASP.NET AJAX sans configuration, les services doivent être hébergés par les services IIS (Internet Information Services). Pour activer un point de terminaison ASP.NET AJAX à l'aide de cette approche, spécifiez WebScriptServiceHostFactory comme paramètre Factory dans la directive @ServiceHost au niveau du fichier .svc. Cette fabrication personnalisée est le composant qui configure automatiquement un point de terminaison ASP.NET AJAX afin qu'il puisse être appelé à partir de JavaScript sur un site Web client.

Pour obtenir un exemple fonctionnel, consultez AJAX Service Without Configuration sample.

Pour une présentation de la façon de configurer un point de terminaison ASP.NET AJAX à l'aide d'éléments de configuration, consultez Comment : utiliser la configuration pour ajouter un point de terminaison AJAX ASP.NET.

Pour créer un service WCF de base

  1. Définissez un contrat de service WCF de base en utilisant une interface marquée avec l'attribut ServiceContractAttribute. Marquez chaque opération avec OperationContractAttribute. Assurez-vous de définir la propriété 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. Implémentez le contrat de service ICalculator avec un CalculatorService.

    public class CalculatorService : ICalculator
    {
        public double Add(double n1, double n2)
        {
            return n1 + n2;
        }
    
    //Other operations omitted…
    
  3. Définissez un espace de noms pour les implémentations ICalculator et CalculatorService en les encapsulant dans un bloc Namespace.

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

Pour héberger le service dans les services IIS sans configuration

  1. Créez un nouveau fichier pour le service avec une extension .svc dans l'application. Modifiez ce fichier en ajoutant les informations directrices @ServiceHost appropriées pour le service. Spécifiez que WebScriptServiceHostFactory sera utilisé dans la directive @ServiceHost pour configurer automatiquement un point de terminaison ASP.NET AJAX.

    <%@ServiceHost 
        language=c# 
        Debug="true" 
        Service="Microsoft.Ajax.Samples.CalculatorService"
        Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory
    %>
    
  2. Générez le service et appelez-le à partir du client. Les services IIS (Internet Information Services) activent le service lorsqu'il est appelé. Pour plus d'informations sur l'hébergement dans IIS, consultez Comment : héberger un service WCF dans IIS.

Pour appeler le service

  1. Le point de terminaison est configuré au niveau d'une adresse vide relative au fichier .svc, par conséquent, le service est maintenant disponible et peut être appelé par l'envoi de demandes à service.svc/<operation>, par exemple, service.svc/Add pour l'opération Add. Vous pouvez l'utiliser en entrant l'URL du service dans la collection Scripts du contrôle Script Manager ASP.NET AJAX. Pour obtenir un exemple, consultez AJAX Service Without Configuration sample.

Exemple

Le point de terminaison configuré automatiquement est créé au niveau d'une adresse vide qui est fonction de l'URL de base. Un fichier de configuration peut également être ajouté et utilisé avec cette approche. Si le fichier de configuration contient des définitions de point de terminaison, ces points de terminaison sont ajoutés au point de terminaison configuré automatiquement.

Par exemple, service.svc utilise WebScriptServiceHostFactory et le répertoire du service contient un fichier Web.config qui définit un point de terminaison pour le même service en utilisant BasicHttpBinding au niveau de l'adresse relative « soap ». Dans ce cas, le service contient deux points de terminaison : un au niveau de service.svc (qui répond aux demandes ASP.NET AJAX) et un autre au niveau de service.svc/soap (qui répond aux demandes SOAP).

Si le fichier de configuration définit un point de terminaison au niveau d'une adresse relative vide et WebScriptServiceHostFactory est utilisé, une exception est levée et le service ne peut pas démarrer.

Vous ne pouvez pas utiliser de configuration pour modifier des paramètres sur le point de terminaison configuré automatiquement. Si un paramètre (tel qu'un quota de lecteur) doit être modifié, vous ne devez pas utiliser l'approche sans configuration en supprimant WebScriptServiceHostFactory dans le fichier .svc et en créant une entrée de configuration pour le point de terminaison.

Si votre service requiert le mode de compatibilité ASP.NET, par exemple, s'il utilise la classe HttpContext ou les mécanismes d'autorisation ASP.NET, un fichier de configuration est néanmoins requis pour activer ce mode. L'élément de configuration requis est <serviceHostingEnvironment>, qui doit être ajouté comme suit.

<system.serviceModel>

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

Pour plus d'informations, consultez , la rubrique Services WCF et ASP.NET.

La classe WebScriptServiceHostFactory est dérivée de la classe ServiceHostFactory. Pour une explication détaillée du mécanisme de fabrication de l'hôte du service, consultez la rubrique Extension de l'hébergement à l'aide de ServiceHostFactory.

Voir aussi

Tâches

Comment : migrer des services Web ASP.NET compatibles AJAX vers WCF

Concepts

Création de services WCF pour ASP.NET AJAX