Sdílet prostřednictvím


Režim kompatibility ASP.NET

Ukázka ASPNetCompatibility ukazuje, jak povolit režim kompatibility ASP.NET ve Windows Communication Foundation (WCF). Služby spuštěné v režimu kompatibility ASP.NET se plně účastní kanálu aplikace ASP.NET a můžou využívat funkce ASP.NET, jako je autorizace souborů/adres URL, stav relace a HttpContext třída. Třída HttpContext umožňuje přístup k souborům cookie, relacím a dalším funkcím ASP.NET. Tento režim vyžaduje, aby vazby používaly přenos HTTP a samotná služba musí být hostovaná ve službě IIS.

V této ukázce je klient konzolovou aplikací (spustitelný soubor) a služba je hostovaná v Internetová informační služba (IIS).

Poznámka:

Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.

Tato ukázka vyžaduje ke spuštění fond aplikací rozhraní .NET Framework 4. Pokud chcete vytvořit nový fond aplikací nebo upravit výchozí fond aplikací, postupujte takto.

  1. Otevřete Ovládací panely. Otevřete aplet Správa istrativní nástroje pod nadpisem Systém a zabezpečení. Otevřete aplet správce Internetová informační služba (IIS).

  2. Rozbalte stromové zobrazení v podokně Připojení iony. Vyberte uzel Fondy aplikací.

  3. Pokud chcete nastavit výchozí fond aplikací tak, aby používal rozhraní .NET Framework 4 (což může způsobit problémy s nekompatibilitou s existujícími weby), klikněte pravým tlačítkem myši na položku seznamu DefaultAppPool a vyberte základní Nastavení.... Nastavte stažení verze rozhraní .Net Framework na .Net Framework verze 4.0.30128 (nebo novější).

  4. Chcete-li vytvořit nový fond aplikací, který používá rozhraní .NET Framework 4 (pro zachování kompatibility pro jiné aplikace), klikněte pravým tlačítkem myši na uzel Fondy aplikací a vyberte Přidat fond aplikací.... Pojmenujte nový fond aplikací a nastavte stažení verze rozhraní .Net Framework na .Net Framework verze 4.0.30128 (nebo novější). Po spuštění následujících kroků instalace klikněte pravým tlačítkem na aplikaci ServiceModelSamples a vyberte Spravovat aplikaci, Upřesnit Nastavení.... Nastavte fond aplikací na nový fond aplikací.

Tato ukázka vychází ze služby Začínáme, která implementuje službu kalkulačky. Smlouva ICalculator byla změněna jako ICalculatorSession smlouva tak, aby umožňovala provádění sady operací při zachování spuštěného výsledku.

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

Služba udržuje stav pomocí funkce pro každého klienta jako více operací služby, které se volají k provedení výpočtu. Klient může načíst aktuální výsledek voláním Result a může vymazat výsledek na nulu voláním Clear.

Služba používá relaci ASP.NET k uložení výsledku pro každou relaci klienta. To umožňuje službě udržovat průběžný výsledek pro každého klienta napříč několika voláními služby.

Poznámka:

ASP.NET stav relace a relace WCF jsou velmi odlišné věci. Podrobnosti o relacích WCF najdete v části Relace .

Služba má intimní závislost na stavu relace ASP.NET a vyžaduje, aby režim kompatibility ASP.NET fungoval správně. Tyto požadavky jsou vyjádřeny deklarativní použitím atributu 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;
    }
}

Při spuštění ukázky se požadavky na operace a odpovědi zobrazí v okně konzoly klienta. Stisknutím klávesy ENTER v okně klienta klienta ukončete klienta.

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

Nastavení, sestavení a spuštění ukázky

  1. Ujistěte se, že jste pro ukázky windows Communication Foundation provedli jednorázový postup instalace.

  2. Pokud chcete sestavit edici C# nebo Visual Basic .NET řešení, postupujte podle pokynů v části Sestavení ukázek windows Communication Foundation.

  3. Po sestavení řešení spusťte Setup.bat a nastavte aplikaci ServiceModelSamples ve službě IIS 7.0. Adresář ServiceModelSamples by se teď měl zobrazit jako aplikace IIS 7.0.

  4. Pokud chcete spustit ukázku v konfiguraci jednoho počítače nebo mezi počítači, postupujte podle pokynů v části Spuštění ukázek windows Communication Foundation.

Viz také