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-Funktionen 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.

Hinweis

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

Hinweis

Damit das Beispiel ausgeführt werden kann, muss ein .NET Framework Version 4-Anwendungspool verfügbar sein. Führen Sie die folgenden Schritte aus, um einen neuen Anwendungspool zu erstellen oder den Standardanwendungspool zu ändern.

  1. Öffnen Sie die Systemsteuerung. Öffnen Sie Verwaltung unter der Überschrift System und Sicherheit. Öffnen Sie das Applet Internetinformationsdienste-Manager.
    1. Erweitern Sie die Strukturansicht im Bereich Verbindungen. Wählen Sie den Knoten Anwendungspools aus.
    2. Wenn Sie den Standardanwendungspool auf .NET Framework Version 4 festlegen möchten (dies verursacht möglicherweise Inkompatibilitätsprobleme mit vorhandenen Websites), klicken Sie mit der rechten Maustaste auf das Listenelement DefaultAppPool, und wählen Sie Grundeinstellungen aus. Legen Sie in der Pulldownliste .NET Framework-Version die Version .NET Framework v4.0.30128 (oder höher) fest.
    3. Um einen neuen Anwendungspool zu erstellen, der .NET Framework Version 4 verwendet (um die Kompatibilität mit anderen Anwendungen beizubehalten), klicken Sie mit der rechten Maustaste auf den Knoten Anwendungspools, und wählen Sie Anwendungspool hinzufügen aus. Benennen Sie den neuen Anwendungspool, und legen Sie in der Pulldownliste .NET Framework-Version die Version auf .NET Framework v4.0.30128 (oder höher) fest. Klicken Sie nach Ausführung der Setupschritte unten mit der rechten Maustaste auf die Anwendung ServiceModelSamples, und wählen Sie Anwendung verwalten, Erweiterte Einstellungen aus. Legen Sie Anwendungspool auf den neuen Anwendungspool fest.
Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.

<Installationslaufwerk>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.

<Installationslaufwerk>:\WF_WCF_Samples\WCF\Basic\Services\Hosting\WebHost\ASPNetCompatibility

Dieses Beispiel basiert auf dem Erste Schritte, in dem ein Rechnerdienst implementiert wird. 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 der Funktion 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.

Hinweis

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 können Sie das Beispiel einrichten, erstellen und ausführen

  1. Vergewissern Sie sich, dass Sie die Einmaliges Setupverfahren für Windows Communication Foundation-Beispiele ausgeführt haben.

  2. Zum Erstellen der C#- oder Visual Basic .NET-Edition der Projektmappe befolgen Sie die unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  3. Nachdem die Projektmappe erstellt wurde, führen Sie Setup.bat aus, um die ServiceModelSamples-Anwendung in IIS 7.0 einzurichten. Das Verzeichnis ServiceModelSamples sollte jetzt als IIS 7.0-Anwendung angezeigt werden.

  4. Um das Beispiel in einer Konfiguration mit einem Computer oder computerübergreifend auszuführen, folgen Sie den Anweisungen unter Durchführen der Windows Communication Foundation-Beispiele.

Siehe auch

AppFabric-Hosting- und -Persistenzbeispiele