Udostępnij przez


zgodność ASP.NET

W przykładzie ASPNetCompatibility pokazano, jak włączyć tryb zgodności ASP.NET w programie Windows Communication Foundation (WCF). Usługi działające w trybie zgodności z ASP.NET w pełni uczestniczą w potoku aplikacji ASP.NET i mogą korzystać z funkcji ASP.NET, takich jak autoryzacja plików/adresów URL, stan sesji oraz klasa HttpContext. Klasa HttpContext umożliwia dostęp do plików cookie, sesji i innych funkcji ASP.NET. Ten tryb wymaga, aby powiązania korzystały z transportu HTTP, a sama usługa musi być hostowana w usługach IIS.

W tym przykładzie klient jest aplikacją konsolową (wykonywalną), a usługa jest hostowana w usługach Internet Information Services (IIS).

Uwaga / Notatka

Procedura konfiguracji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.

Ten przykład wymaga puli aplikacji programu .NET Framework 4 do uruchomienia. Aby utworzyć nową pulę aplikacji lub zmodyfikować domyślną pulę aplikacji, wykonaj następujące kroki.

  1. Otwórz Panel sterowania. Otwórz aplet Narzędzia administracyjne w obszarze nagłówka System i Zabezpieczenia . Otwórz aplet Menedżer usług Internet Information Services (IIS).

  2. Rozwiń widok drzewa w okienku Połączenia . Wybierz węzeł Pule aplikacji.

  3. Aby ustawić domyślną pulę aplikacji do używania programu .NET Framework 4 (co może powodować problemy z niezgodnością z istniejącymi witrynami), kliknij prawym przyciskiem myszy element listy DefaultAppPool i wybierz pozycję Ustawienia podstawowe.... Ustaw ściąganie wersji programu .Net Framework na .Net Framework w wersji 4.0.30128 (lub nowszej).

  4. Aby utworzyć nową pulę aplikacji korzystającą z programu .NET Framework 4 (w celu zachowania zgodności dla innych aplikacji), kliknij prawym przyciskiem myszy węzeł Pule aplikacji i wybierz polecenie Dodaj pulę aplikacji.... Nadaj nowej puli aplikacji nazwę i ustaw ściąganie wersji programu .Net Framework na .Net Framework w wersji 4.0.30128 (lub nowszej). Po wykonaniu poniższych kroków konfiguracji kliknij prawym przyciskiem myszy aplikację ServiceModelSamples i wybierz pozycję Zarządzaj aplikacją, Ustawienia zaawansowane.... Ustaw pulę aplikacji na nową pulę aplikacji.

Ten przykład jest oparty na Getting Started, który implementuje usługę kalkulatora. Kontrakt ICalculator został zmodyfikowany jako ICalculatorSession kontrakt, aby umożliwić wykonywanie zestawu operacji, zachowując wynik działania.

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

Usługa utrzymuje stan przy użyciu funkcji dla każdego klienta, ponieważ wiele operacji usługi jest wywoływanych w celu wykonania obliczeń. Klient może pobrać bieżący wynik, wywołując Result i może wyczyścić wynik do zera, wywołując Clear.

Usługa używa sesji ASP.NET do przechowywania wyników dla każdej sesji klienta. Pozwala to usłudze na zachowanie bieżącego wyniku dla każdego klienta podczas wielu wywołań usługi.

Uwaga / Notatka

Stan sesji w ASP.NET i sesje w WCF to bardzo różne pojęcia. Zobacz Sesja , aby uzyskać szczegółowe informacje na temat sesji programu WCF.

Usługa ma intymną zależność od stanu sesji ASP.NET i wymaga, aby tryb zgodności ASP.NET działał poprawnie. Te wymagania są wyrażane deklaratywnie przez zastosowanie atrybutu 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;
    }
}

Po uruchomieniu przykładu żądania operacji i odpowiedzi są wyświetlane w oknie konsoli klienta. Naciśnij ENTER w oknie klienta, aby zamknąć klienta.

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

Aby skonfigurować, skompilować i uruchomić przykładowy program

  1. Upewnij się, że wykonano procedurę konfiguracjiOne-Time dla próbek Windows Communication Foundation.

  2. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w Kompilowanie przykładów Windows Communication Foundation.

  3. Po utworzeniu rozwiązania uruchom Setup.bat, aby skonfigurować aplikację ServiceModelSamples w usługach IIS 7.0. Katalog ServiceModelSamples powinien teraz być wyświetlany jako aplikacja usług IIS 7.0.

  4. Aby uruchomić przykład w konfiguracji pojedynczego komputera lub między komputerami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.

Zobacz także