Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
ASPNetCompatibility-exemplet visar hur du aktiverar ASP.NET kompatibilitetsläge i Windows Communication Foundation (WCF). Tjänster som körs i ASP.NET Kompatibilitetsläge deltar fullt ut i ASP.NET programpipeline och kan använda ASP.NET funktioner som fil-/URL-auktorisering, sessionstillstånd och HttpContext -klassen. Klassen HttpContext ger åtkomst till cookies, sessioner och andra ASP.NET funktioner. Det här läget kräver att bindningarna använder HTTP-transporten och att själva tjänsten måste finnas i IIS.
I det här exemplet är klienten ett konsolprogram (en körbar fil) och tjänsten finns i Internet Information Services (IIS).
Anmärkning
Konfigurationsproceduren och bygginstruktionerna för det här exemplet finns i slutet av det här avsnittet.
Det här exemplet kräver en .NET Framework 4-programpool för att kunna köras. Följ dessa steg om du vill skapa en ny programpool eller ändra standardprogrampoolen.
Öppna Kontrollpanelen. Öppna appleten Administrativa verktyg under rubriken System och säkerhet . Öppna appleten Internet Information Services (IIS) Manager .
Expandera trädvyn i fönstret Anslutningar . Välj noden Programpooler .
Om du vill ange att standardprogrampoolen ska använda .NET Framework 4 (vilket kan orsaka inkompatibilitetsproblem med befintliga webbplatser) högerklickar du på listobjektet DefaultAppPool och väljer Grundläggande inställningar.... Ställ in .Net Framework-versionen till .Net Framework v4.0.30128 (eller senare).
Om du vill skapa en ny programpool som använder .NET Framework 4 (för att bevara kompatibiliteten för andra program) högerklickar du på noden Programpooler och väljer Lägg till programpool.... Ge den nya programpoolen ett namn och ange .Net Framework Version-hämtningen till .Net Framework v4.0.30128 (eller senare). När du har kört installationsstegen nedan högerklickar du på programmet ServiceModelSamples och väljer Hantera program, Avancerade inställningar.... Ange programpoolen till den nya programpoolen.
Det här exemplet baseras på Komma igång, som implementerar en kalkylatortjänst. Kontraktet ICalculator har ändrats till kontraktet ICalculatorSession för att möjliggöra en uppsättning operationer som kan utföras, samtidigt som ett löpande resultat bibehålls.
[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();
}
Tjänsten bibehåller tillstånd, via funktionen, för varje klient när flera tjänsteoperationer anropas för att utföra en beräkning. Klienten kan hämta det aktuella resultatet genom att anropa Result och rensa resultatet till noll genom att anropa Clear.
Tjänsten använder den ASP.NET sessionen för att lagra resultatet för varje klientsession. På så sätt kan tjänsten underhålla det löpande resultatet för varje klient över flera anrop till tjänsten.
Anmärkning
ASP.NET sessionstillstånd och WCF-sessioner är mycket olika saker. Mer information om WCF-sessioner finns i Session .
Tjänsten har ett intimt beroende av ASP.NET sessionstillstånd och kräver ASP.NET kompatibilitetsläge för att fungera korrekt. Dessa krav uttrycks deklarativt genom att attributet tillämpas 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;
    }
}
När du kör exemplet visas åtgärdsbegäranden och svar i klientkonsolfönstret. Tryck på RETUR i klientfönstret för att stänga av klienten.
0, + 100, - 50, * 17.65, / 2 = 441.25
Press <ENTER> to terminate client.
Så här konfigurerar du, skapar och kör exemplet
Kontrollera att du har utfört One-Time installationsproceduren för Windows Communication Foundation-exempel.
Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.
När lösningen har skapats kör du Setup.bat för att konfigurera ServiceModelSamples-programmet i IIS 7.0. Katalogen ServiceModelSamples bör nu visas som ett IIS 7.0-program.
Om du vill köra exemplet på en enkel dator eller i en konfiguration mellan flera datorer, följer du anvisningarna i Utföra Windows Communication Foundation-exempel.