Freigeben über


ASP.NET-Kompatibilität

In diesem Beispiel wird veranschaulicht, wie der ASP.NET-Kompatibilitätsmodus in Windows Communication Foundation (WCF) aktiviert wird. Dienste, die im ASP.NET-Kompatibilitätsmodus ausgeführt werden, nehmen vollständig an der ASP.NET-Anwendungspipeline teil und können ASP.NET-Funktionen, wie Datei-/URL-Autorisierung, Sitzungsstatus und die HttpContext-Klasse, nutzen. Die HttpContext-Klasse lässt Zugriff auf Cookies, Sitzungen und andere ASP.NET-Features zu. Dieser Modus erfordert, dass die Bindungen den HTTP-Transport verwenden und der Dienst selbst in IIS gehostet ist.

In diesem Beispiel ist der Client eine Konsolenanwendung (eine ausführbare Datei), und der Dienst wird in Internetinformationsdiensten (IIS) gehostet.

Tipp

Die Setupprozedur und die Erstellungsanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.

Dieses Beispiel basiert auf dem Beispiel 'Erste Schritte', das einen Rechnerdienst implementiert. Der ICalculator-Vertrag wurde als ICalculatorSession-Vertrag geändert, damit eine Reihe von Vorgängen ausgeführt werden kann, während ein Zwischenergebnis aufbewahrt wird.

[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();
}

Während mehrere Dienstvorgänge zum Ausführen einer Berechnung aufgerufen werden, behält der Dienst mithilfe des Features den Status für jeden Client bei. Der Client kann das aktuelle Ergebnis abrufen, indem er Result aufruft, und es auf null löschen, indem er Clear aufruft.

Der Dienst verwendet die ASP.NET-Sitzung, um die Ergebnisse für jede Clientsitzung zu speichern. Dadurch wird dem Dienst ermöglicht, das aktuelle Ergebnis für jeden Client über mehrere Aufrufe des Diensts hinweg beizubehalten.

Tipp

ASP.NET-Sitzungsstatus und WCF-Sitzungen sind unterschiedliche Dinge. Weitere Informationen zu WCF-Sitzungen finden Sie unter Sitzung.

Der Dienst verfügt über eine enge Abhängigkeit vom ASP.NET-Sitzungsstatus und erfordert den ASP.NET-Kompatibilitätsmodus, um korrekt zu arbeiten. Diese Anforderungen werden deklarativ durch die Übernahme des AspNetCompatibilityRequirements-Attributs ausgedrückt.

[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;
    }
}

Wenn Sie das Beispiel ausführen, werden die Anforderungen und Antworten für den Vorgang im Clientkonsolenfenster angezeigt. Drücken Sie im Clientfenster die EINGABETASTE, um den Client zu schließen.

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

So richten Sie das Beispiel ein, erstellen es und führen es aus

  1. Stellen Sie sicher, dass Sie Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation ausgeführt haben.

  2. Zum Erstellen der C#- oder Visual Basic .NET-Version der Lösung folgen Sie den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  3. Wenn Sie das Beispiel in einer Konfiguration mit einem einzigen Computer oder computerübergreifend ausführen möchten, befolgen Sie die unter Durchführen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.