Teilen über


ASP.NET Kompatibilität

Das ASPNetCompatibility-Beispiel veranschaulicht, wie ASP.NET Kompatibilitätsmodus in Windows Communication Foundation (WCF) aktiviert wird. Dienste, die im ASP.NET Kompatibilitätsmodus ausgeführt werden, sind vollständig an der ASP.NET Anwendungspipeline beteiligt und können ASP.NET Features wie Datei-/URL-Autorisierung, Sitzungszustand und HttpContext Klasse nutzen. Die HttpContext Klasse ermöglicht den Zugriff auf Cookies, Sitzungen und andere ASP.NET Features. Dieser Modus erfordert, dass die Bindungen den HTTP-Transport verwenden und der Dienst selbst in IIS gehostet werden muss.

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

Hinweis

Die Einrichtungsschritte und Bauanleitungen für dieses Beispiel finden Sie am Ende dieses Abschnitts.

Für dieses Beispiel ist ein .NET Framework 4-Anwendungspool erforderlich, um ausgeführt zu werden. 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 das Applet "Verwaltungstools " unter der Überschrift "System und Sicherheit ". Öffnen Sie das Iis-Manager-Applet (Internet Information Services ).

  2. Erweitern Sie die Strukturansicht im Bereich Verbindungen. Wählen Sie den Knoten "Anwendungspools" aus.

  3. Um den Standardanwendungspool für die Verwendung von .NET Framework 4 festzulegen (was zu Inkompatibilitätsproblemen mit vorhandenen Websites führen kann), klicken Sie mit der rechten Maustaste auf das DefaultAppPool-Listenelement , und wählen Sie "Standardeinstellungen" aus. Legen Sie das .Net Framework-Version-Pulldown auf .Net Framework v4.0.30128 (oder höher) fest.

  4. Wenn Sie einen neuen Anwendungspool erstellen möchten, der .NET Framework 4 verwendet (um die Kompatibilität für andere 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 den Pulldown der .Net Framework-Version auf .Net Framework v4.0.30128 (oder höher) fest. Nachdem Sie die nachstehenden Setupschritte ausgeführt haben, klicken Sie mit der rechten Maustaste auf die ServiceModelSamples-Anwendung , und wählen Sie "Anwendung verwalten", "Erweiterte Einstellungen" aus. Legen Sie den Anwendungspool auf den neuen Anwendungspool fest.

Dieses Beispiel basiert auf dem Erste Schritte, der 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 laufendes Ergebnis erhalten bleibt.

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

Der Dienst verwaltet den Zustand für jeden Client, indem er das Feature nutzt, während mehrere Dienstvorgänge aufgerufen werden, um eine Berechnung durchzuführen. Der Client kann das aktuelle Ergebnis abrufen, indem er aufruft Result und das Ergebnis durch Aufrufen Clearauf Null löschen kann.

Der Dienst verwendet die ASP.NET Sitzung, um das Ergebnis für jede Clientsitzung zu speichern. Dadurch kann der Dienst das laufende Ergebnis für jeden Client über mehrere Aufrufe des Diensts hinweg verwalten.

Hinweis

ASP.NET Sitzungszustand und WCF-Sitzungen sind sehr unterschiedlich. Einzelheiten zu WCF-Sitzungen finden Sie unter Sitzung.

Der Dienst hat eine intime Abhängigkeit vom ASP.NET Sitzungszustand und erfordert, dass ASP.NET Kompatibilitätsmodus ordnungsgemäß funktioniert. Diese Anforderungen werden deklarativ ausgedrückt, indem das AspNetCompatibilityRequirements Attribut angewendet wird.

[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 Vorgangsanforderungen und -antworten 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. Stellen Sie sicher, dass Sie das One-Time Setup-Verfahren für die Windows Communication Foundation-Beispiele ausgeführt haben.

  2. Um die C#- oder Visual Basic .NET-Edition der Lösung zu erstellen, befolgen Sie die Anweisungen in Building the Windows Communication Foundation Samples.

  3. Führen Sie nach dem Erstellen der Lösung Setup.bat aus, um die ServiceModelSamples-Anwendung in IIS 7.0 einzurichten. Das ServiceModelSamples-Verzeichnis sollte nun als IIS 7.0-Anwendung angezeigt werden.

  4. Wenn Sie das Beispiel in einer Einzelcomputer- oder einer computerübergreifenden Konfiguration ausführen möchten, folgen Sie den Anweisungen unter Durchführen der Windows Communication Foundation-Beispiele.

Siehe auch