Udostępnij za pośrednictwem


Zgodność platformy 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 ASP.NET uczestniczą w pełni w potoku aplikacji ASP.NET i mogą korzystać z funkcji ASP.NET, takich jak autoryzacja pliku/adresu URL, stan sesji i HttpContext klasa. 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

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 Administracja istrative Tools w obszarze nagłówka System and Security. Otwórz aplet Menedżer usług Internet Information Services (IIS).

  2. Rozwiń widok drzewa w okienku Połączenie ions. 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ę Podstawowa Ustawienia.... 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ą, Zaawansowane Ustawienia.... Ustaw pulę aplikacji na nową pulę aplikacji.

Ten przykład jest oparty na rozpoczynaniu pracy, która 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 wywołanie Result metody i może wyczyścić wynik do zera, wywołując polecenie Clear.

Usługa używa sesji ASP.NET do przechowywania wyników dla każdej sesji klienta. Dzięki temu usługa może zachować uruchomiony wynik dla każdego klienta w wielu wywołaniach usługi.

Uwaga

ASP.NET stan sesji i sesje programu WCF są bardzo różne. 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 klawisz 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ład

  1. Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.

  2. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu 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 też