Partage via


compatibilité ASP.NET

L’exemple ASPNetCompatibility montre comment activer ASP.NET mode de compatibilité dans Windows Communication Foundation (WCF). Les services s’exécutant en mode de compatibilité ASP.NET participent entièrement au pipeline d’application ASP.NET et peuvent utiliser des fonctionnalités ASP.NET telles que l’autorisation de fichier/URL, l’état de session et la HttpContext classe. La HttpContext classe permet d’accéder aux cookies, sessions et autres fonctionnalités de ASP.NET. Ce mode nécessite que les liaisons utilisent le transport HTTP et que le service lui-même doit être hébergé dans IIS.

Dans cet exemple, le client est une application console (exécutable) et le service est hébergé dans Internet Information Services (IIS).

Remarque

La procédure de configuration et les instructions de génération de cet exemple se trouvent à la fin de cette rubrique.

Cet exemple nécessite un pool d’applications .NET Framework 4 pour s’exécuter. Pour créer un pool d’applications ou pour modifier le pool d’applications par défaut, procédez comme suit.

  1. Ouvrez le Panneau de configuration. Ouvrez l’applet Outils d’administration sous le titre Système et Sécurité . Ouvrez l’applet du Gestionnaire des services Internet (IIS).

  2. Développez l’arborescence du volet Connexions. Sélectionnez le nœud Pools d’applications .

  3. Pour définir le pool d’applications par défaut pour utiliser .NET Framework 4 (ce qui peut entraîner des problèmes d’incompatibilité avec les sites existants), cliquez avec le bouton droit sur l’élément de liste DefaultAppPool et sélectionnez Paramètres de base.... Dans le menu déroulant Version du .Net Framework, choisissez .Net Framework v4.0.30128 (ou version ultérieure).

  4. Pour créer un pool d’applications qui utilise .NET Framework 4 (pour préserver la compatibilité pour d’autres applications), cliquez avec le bouton droit sur le nœud Pools d’applications et sélectionnez Ajouter un pool d’applications.... Nommez le nouveau pool d’applications et définissez le menu déroulant de la version du .Net Framework sur .Net Framework v4.0.30128 (ou version ultérieure). Après avoir exécuté les étapes de configuration ci-dessous, cliquez avec le bouton droit sur l’application ServiceModelSamples , puis sélectionnez Gérer l’application, Paramètres avancés.... Affectez le nouveau pool d’applications comme Pool d’applications.

Cet exemple est basé sur la prise en main, qui implémente un service de calculatrice. Le ICalculator contrat a été modifié comme le contrat ICalculatorSession pour permettre l’exécution d’un ensemble d’opérations, tout en maintenant un résultat continu.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculatorSession
{
    [OperationContract]
    void Clear();
    [OperationContract]
    void AddTo(double n);
    [OperationContract]
    void SubtractFrom(double n);
    [OperationContract]
    void MultiplyBy(double n);
    [OperationContract]
    void DivideBy(double n);
    [OperationContract]
    double Result();
}

Le service conserve l’état, à l’aide de la fonctionnalité, pour chaque client, car plusieurs opérations de service sont appelées pour effectuer un calcul. Le client peut récupérer le résultat actuel en appelant Result et effacer le résultat sur zéro en appelant Clear.

Le service utilise la session ASP.NET pour stocker le résultat de chaque session cliente. Cela permet au service de maintenir le résultat en cours d’exécution pour chaque client sur plusieurs appels au service.

Remarque

L'état de session ASP.NET et les sessions WCF diffèrent considérablement. Consultez Session pour plus d’informations sur les sessions WCF.

Le service a une dépendance étroite à l'état de session d'ASP.NET et nécessite le mode de compatibilité d'ASP.NET pour fonctionner correctement. Ces exigences sont exprimées de manière déclarative en appliquant l’attribut AspNetCompatibilityRequirements .

[AspNetCompatibilityRequirements(RequirementsMode =
                       AspNetCompatibilityRequirementsMode.Required)]
public class CalculatorService : ICalculatorSession
{
    double Result
    {  // store result in AspNet Session
       get {
          if (HttpContext.Current.Session["Result"] != null)
             return (double)HttpContext.Current.Session["Result"];
          return 0.0D;
       }
       set
       {
          HttpContext.Current.Session["Result"] = value;
       }
    }
    public void Clear()
    {
        Result = 0.0D;
    }
    public void AddTo(double n)
    {
        Result += n;
    }
    public void SubtractFrom(double n)
    {
        Result -= n;
    }
    public void MultiplyBy(double n)
    {
        Result *= n;
    }
    public void DivideBy(double n)
    {
        Result /= n;
    }
    public double Result()
    {
        return Result;
    }
}

Lorsque vous exécutez l’exemple, les demandes et réponses de l’opération s’affichent dans la fenêtre de la console cliente. Appuyez sur Entrée dans la fenêtre du client pour arrêter le client.

0, + 100, - 50, * 17.65, / 2 = 441.25
Press <ENTER> to terminate client.

Pour configurer, générer et exécuter l’exemple

  1. Vérifiez que vous avez effectué la procédure d’installationOne-Time pour les exemples Windows Communication Foundation.

  2. Pour générer l’édition C# ou Visual Basic .NET de la solution, conformez-vous aux instructions figurant dans Building the Windows Communication Foundation Samples.

  3. Une fois la solution générée, exécutez Setup.bat pour configurer l’application ServiceModelSamples dans IIS 7.0. Le répertoire ServiceModelSamples doit maintenant apparaître sous la forme d’une application IIS 7.0.

  4. Pour exécuter l’exemple dans une configuration à ordinateur unique ou inter-ordinateur, suivez les instructions de l’exécution des exemples Windows Communication Foundation.

Voir aussi