ASP.NET-KompatibilitätASP.NET Compatibility

Dieses Beispiel veranschaulicht das Aktivieren von ASP.NETASP.NET -Kompatibilitätsmodus in Windows Communication Foundation (WCF).This sample demonstrates how to enable ASP.NETASP.NET Compatibility mode in Windows Communication Foundation (WCF). Dienste, die im ASP.NETASP.NET-Kompatibilitätsmodus ausgeführt werden, nehmen vollständig an der ASP.NETASP.NET-Anwendungspipeline teil und können ASP.NETASP.NET-Funktionen, wie Datei-/URL-Autorisierung, Sitzungsstatus und die HttpContext-Klasse, nutzen.Services running in ASP.NETASP.NET Compatibility mode participate fully in the ASP.NETASP.NET application pipeline and can make use of ASP.NETASP.NET features such as file/URL authorization, session state, and the HttpContext class. Die HttpContext-Klasse lässt Zugriff auf Cookies, Sitzungen und andere ASP.NETASP.NET-Funktionen zu.The HttpContext class allows access to cookies, sessions, and other ASP.NETASP.NET features. Dieser Modus erfordert, dass die Bindungen den HTTP-Transport verwenden und der Dienst selbst in IIS gehostet ist.This mode requires that the bindings use the HTTP transport and the service itself must be hosted in IIS.

In diesem Beispiel ist der Client eine Konsolenanwendung (eine ausführbare Datei), und der Dienst wird in Internetinformationsdiensten (IIS) gehostet.In this sample, the client is a console application (an executable) and the service is hosted in Internet Information Services (IIS).

Hinweis

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.The set-up procedure and build instructions for this sample are located at the end of this topic.

Hinweis

Damit das Beispiel ausgeführt werden kann, muss ein .NET Framework Version 4.NET Framework version 4-Anwendungspool verfügbar sein.This sample requires a .NET Framework Version 4.NET Framework version 4 application pool in order to run. Führen Sie die folgenden Schritte aus, um einen neuen Anwendungspool zu erstellen oder den Standardanwendungspool zu ändern.To create a new application pool, or to modify the default application pool, follow these steps.

  1. Open in der Systemsteuerung.Open Control Panel. Öffnen der Verwaltung Applet unter der System und Sicherheit Überschrift.Open the Administrative Tools applet under the System and Security heading. Öffnen der (Internet Information Services, IIS) Manager Applet ".Open the Internet Information Services (IIS) Manager applet.
    1. Erweitern Sie die Strukturansicht, in der Verbindungen Bereich.Expand the treeview in the Connections pane. Wählen Sie die Anwendungspools Knoten.Select the Application Pools node.
    2. Festlegen der Standardanwendungspool verwendet .NET Framework Version 4.NET Framework version 4 (Dies verursacht möglicherweise Inkompatibilitätsprobleme mit vorhandenen Websites), mit der rechten Maustaste die DefaultAppPool Element aus, und wählen Sie Grundeinstellungen... .To set the default application pool to use .NET Framework Version 4.NET Framework version 4 (which may cause incompatibility problems with existing sites), right-click the DefaultAppPool list item and select Basic Settings…. Legen Sie die .Net Framework-Version Pulldownliste .Net Framework v4.0.30128 (oder höher).Set the .Net Framework Version pull-down to .Net Framework v4.0.30128 (or later).
    3. Um einen neuen Anwendungspool erstellen, verwendet .NET Framework Version 4.NET Framework version 4 (um die Kompatibilität mit anderen Anwendungen beizubehalten), mit der rechten Maustaste die Anwendungspools Knoten, und wählen Anwendungspool hinzufügen... .To create a new application pool that uses .NET Framework Version 4.NET Framework version 4 (to preserve compatibility for other applications), right-click the Application Pools node and select Add Application Pool…. Benennen Sie den neuen Anwendungspool, und legen die .Net Framework-Version Pulldownliste .Net Framework v4.0.30128 (oder höher).Name the new application pool, and set the .Net Framework Version pull-down to .Net Framework v4.0.30128 (or later). Nach dem Ausführen des Setups unten aufgeführten Schritte, mit der rechten Maustaste die ServiceModelSamples Anwendung, und wählen -Anwendung verwalten, Erweiterte Einstellungen... .After running the setup steps below, right-click the ServiceModelSamples application and select Manage Application, Advanced Settings…. Legen Sie die Anwendungspool auf den neuen Anwendungspool.Set the Application Pool to the new application pool.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your computer. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, fahren Sie mit Windows Communication Foundation (WCF) und Windows Workflow Foundation (WF) Samples for .NET Framework 4 aller Windows Communication Foundation (WCF) herunterladen und WFWF Beispiele.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

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

Dieses Beispiel basiert auf der Einstieg, implementiert einen rechnerdienst.This sample is based on the Getting Started, which implements a calculator service. 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.The ICalculator contract has been modified as the ICalculatorSession contract to allow a set of operations to be performed, while keeping a running result.

[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.The service maintains state, using the feature, for each client as multiple service operations are called to perform a calculation. Der Client kann das aktuelle Ergebnis abrufen, indem er Result aufruft, und es auf null löschen, indem er Clear aufruft.The client can retrieve the current result by calling Result and can clear the result to zero by calling Clear.

Der Dienst verwendet die ASP.NETASP.NET-Sitzung, um die Ergebnisse für jede Clientsitzung zu speichern.The service uses the ASP.NETASP.NET session to store the result for each client session. Dadurch wird dem Dienst ermöglicht, das aktuelle Ergebnis für jeden Client über mehrere Aufrufe des Diensts hinweg beizubehalten.This allows the service to maintain the running result for each client across multiple calls to the service.

Hinweis

ASP.NETASP.NET Sitzungsstatus und WCF-Sitzungen sind sehr unterschiedliche Dinge. session state and WCF sessions are very different things. Finden Sie unter der Sitzung Weitere Informationen zu WCF-Sitzungen.See the Session for details on WCF sessions.

Der Dienst verfügt über eine enge Abhängigkeit vom ASP.NETASP.NET-Sitzungsstatus und erfordert den ASP.NETASP.NET-Kompatibilitätsmodus, um korrekt zu arbeiten.The service has an intimate dependency on ASP.NETASP.NET session state and requires ASP.NETASP.NET compatibility mode to function correctly. Diese Anforderungen werden deklarativ durch die Übernahme des AspNetCompatibilityRequirements-Attributs ausgedrückt.These requirements are expressed declaratively by applying the AspNetCompatibilityRequirements attribute.

[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.When you run the sample, the operation requests and responses are displayed in the client console window. Drücken Sie im Clientfenster die EINGABETASTE, um den Client zu schließen.Press ENTER in the client window to shut down the client.

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

So können Sie das Beispiel einrichten, erstellen und ausführenTo set up, build, and run the sample

  1. Achten Sie ausgeführt haben die Setupprozedur für die Windows Communication Foundation-Beispiele zum einmaligen.Be sure you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Um die C#- oder Visual Basic .NET-Edition der Projektmappe zu erstellen, befolgen Sie die unter Building the Windows Communication Foundation Samplesaufgeführten Anweisungen.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  3. Nachdem die Projektmappe erstellt wurde, führen Sie Setup.bat aus, um die ServiceModelSamples-Anwendung in IIS 7.0IIS 7.0 einzurichten.After the solution has been built, run Setup.bat to set up the ServiceModelSamples Application in IIS 7.0IIS 7.0. Das Verzeichnis ServiceModelSamples sollte jetzt als IIS 7.0IIS 7.0-Anwendung angezeigt werden.The ServiceModelSamples directory should now appear as an IIS 7.0IIS 7.0 Application.

  4. Um das Beispiel in einer Einzelcomputer- oder computerübergreifenden Konfiguration ausführen möchten, folgen Sie den Anweisungen Ausführen der Windows Communication Foundation-Beispiele.To run the sample in a single- or cross-computer configuration, follow the instructions in Running the Windows Communication Foundation Samples.

Siehe auchSee Also

AppFabric-Hosting und PersistenzbeispieleAppFabric Hosting and Persistence Samples