Partager via


ASP.NET Compatibility

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

Dans cet exemple, le client est une application console (fichier exécutable) et le service est hébergé dans les services IIS

Notes

La procédure d'installation ainsi que les instructions de génération correspondant à cet exemple figurent en fin de rubrique.

Cet exemple requiert pour fonctionner un pool d’applications .NET Framework 4. Pour créer un pool d'applications ou 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 Gestionnaire des services Internet (IIS).

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

  3. Pour configurer le pool d’applications par défaut de sorte qu’il utilise .NET Framework 4 (ce qui peut provoquer des problèmes d’incompatibilité avec des 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 (afin de préserver la compatibilité avec 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, dans le menu déroulant Version du .Net Framework, choisissez .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 et sélectionnez Gérer une application, puis 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. Les contrats ICalculator et ICalculatorSession ont été modifiés pour permettre à un ensemble d'opérations d'être effectuées tout en conservant un résultat d'exécution.

[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 de chaque client (à l’aide de la fonctionnalité correspondante) tandis que 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 remettre le résultat à zéro en appelant Clear.

Le service utilise la session ASP.NET pour stocker le résultat de chaque session de client. Cela lui permet de conserver le résultat d'exécution de chaque client tandis qu'il reçoit plusieurs appels.

Notes

L’état de session ASP.NET et les sessions WCF sont deux fonctionnalités très différentes l’une de l’autre. Consultez Session pour plus d’informations sur les sessions WCF.

Le service dépend étroitement de l’état de session ASP.NET, et nécessite que le mode de compatibilité ASP.NET fonctionne correctement. Ces exigences sont définies 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 d'opération s'affichent dans la fenêtre de console du client. Appuyez sur Entrée dans la fenêtre du client pour l'arrêter.

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

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

  1. Assurez-vous d’avoir effectué la Procédure d’installation unique 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 installer l’application ServiceModelSamples dans IIS 7.0. Le répertoire ServiceModelSamples doit maintenant apparaître en tant qu’application IIS 7.0.

  4. Pour exécuter l’exemple dans une configuration à un ou plusieurs ordinateurs, suivez les instructions figurant dans Exécution des exemples Windows Communication Foundation.

Voir aussi