Dela via


ASP.NET kompatibilitet

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

Kommentar

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.

  1. Öppna Kontrollpanelen. Öppna appleten Administrativa verktyg under rubriken System och säkerhet . Öppna appleten Internet Information Services (IIS) Manager .

  2. Expandera trädvyn i fönstret Anslut ions. Välj noden Programpooler.

  3. 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.... Ange .Net Framework-versionen till .Net Framework v4.0.30128 (eller senare).

  4. 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, Avancerat 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 som kontraktet så att en uppsättning åtgärder kan utföras, samtidigt som ICalculatorSession 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 underhåller tillstånd, med hjälp av funktionen, för varje klient eftersom flera tjänståtgärder 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.

Kommentar

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

  1. Se till att du har utfört engångsinstallationsproceduren för Windows Communication Foundation-exempel.

  2. Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.

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

  4. Om du vill köra exemplet i en konfiguration mellan datorer eller datorer följer du anvisningarna i Köra Windows Communication Foundation-exempel.

Se även