Megosztás a következőn keresztül:


ASP.NET kompatibilitás

Az ASPNetCompatibility minta bemutatja, hogyan engedélyezheti ASP.NET kompatibilitási módot a Windows Communication Foundationben (WCF). A ASP.NET kompatibilitási módban futó szolgáltatások teljes mértékben részt vesznek a ASP.NET alkalmazásfolyamatban, és olyan ASP.NET funkciókat használhatnak, mint a fájl-/URL-engedélyezés, a munkamenet állapota és az HttpContext osztály. Az HttpContext osztály engedélyezi a cookie-k, munkamenetek és egyéb ASP.NET funkciók elérését. Ez a mód megköveteli, hogy a kötések a HTTP-átvitelt használják, és magát a szolgáltatást az IIS-ben kell üzemeltetni.

Ebben a mintában az ügyfél egy konzolalkalmazás (végrehajtható), és a szolgáltatás az Internet Information Servicesben (IIS) található.

Feljegyzés

A minta beállítási eljárása és összeállítási utasításai a témakör végén találhatók.

Ehhez a mintához egy .NET-keretrendszer 4 alkalmazáskészletre van szükség a futtatáshoz. Új alkalmazáskészlet létrehozásához vagy az alapértelmezett alkalmazáskészlet módosításához kövesse az alábbi lépéseket.

  1. Nyissa meg Vezérlőpultot. Nyissa meg a Rendszergazda istrative Tools kisalkalmazást a Rendszer és biztonság fejléc alatt. Nyissa meg az Internet Information Services (IIS) Manager kisalkalmazást.

  2. Bontsa ki a fanézetet a Csatlakozás ions panelen. Válassza ki az Alkalmazáskészletek csomópontot.

  3. Ha az alapértelmezett alkalmazáskészletet a .NET-keretrendszer 4 használatára szeretné beállítani (ami kompatibilitási problémákat okozhat a meglévő webhelyekkel), kattintson a jobb gombbal a DefaultAppPool listaelemre, és válassza az Alapszintű Gépház... lehetőséget. Állítsa a .Net-keretrendszer lekéréses verzióját a .Net-keretrendszer 4.0.30128-es (vagy újabb) verziójára.

  4. Ha a .NET-keretrendszer 4-et használó új alkalmazáskészletet szeretne létrehozni (más alkalmazások kompatibilitásának megőrzése érdekében), kattintson a jobb gombbal az Alkalmazáskészletek csomópontra, és válassza az Alkalmazáskészlet hozzáadása... lehetőséget. Nevezze el az új alkalmazáskészletet, és állítsa a .Net-keretrendszer lekéréses verzióját a .Net-keretrendszer 4.0.30128-es (vagy újabb) verziójára. Az alábbi telepítési lépések futtatása után kattintson a jobb gombbal a ServiceModelSamples alkalmazásra, és válassza az Alkalmazás kezelése, Speciális Gépház... lehetőséget. Állítsa az alkalmazáskészletet az új alkalmazáskészletre.

Ez a minta az első lépéseken alapul, amely egy számológép szolgáltatást implementál. A ICalculator szerződés szerződésként ICalculatorSession módosult, hogy lehetővé tegye a műveletek egy csoportjának végrehajtását, miközben megtartja a futó eredményt.

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

A szolgáltatás a funkció használatával fenntartja az állapotot minden ügyfél esetében, mivel a rendszer több szolgáltatásműveletet hív meg egy számítás végrehajtásához. Az ügyfél hívással Result lekérheti az aktuális eredményt, és hívással Clearnullára törölheti az eredményt.

A szolgáltatás az ASP.NET munkamenetet használja az egyes ügyfél-munkamenetek eredményének tárolására. Ez lehetővé teszi, hogy a szolgáltatás fenntartsa az egyes ügyfelek futási eredményét a szolgáltatás több hívása során.

Feljegyzés

ASP.NET munkamenet állapota és a WCF-munkamenetek nagyon különbözőek. A WCF-munkamenetek részleteiért lásd a munkamenetet .

A szolgáltatás intim függőségben van ASP.NET munkamenet-állapottól, és ASP.NET kompatibilitási módot igényel a megfelelő működéshez. Ezeket a követelményeket deklaratív módon fejezzük ki az AspNetCompatibilityRequirements attribútum alkalmazásával.

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

A minta futtatásakor a műveleti kérelmek és a válaszok megjelennek az ügyfélkonzol ablakában. Nyomja le az ENTER billentyűt az ügyfélablakban az ügyfél leállításához.

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

A minta beállítása, összeállítása és futtatása

  1. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták egyszeri beállítási eljárását.

  2. A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse a Windows Communication Foundation-minták készítéséhez szükséges utasításokat.

  3. A megoldás létrehozása után futtassa a Setup.bat a ServiceModelSamples alkalmazás beállításához az IIS 7.0-ban. A ServiceModelSamples könyvtárnak mostantól IIS 7.0-s alkalmazásként kell megjelennie.

  4. A minta egyszámítógépes vagy számítógépközi konfigurációban való futtatásához kövesse a Windows Communication Foundation-minták futtatásával kapcsolatos utasításokat.

Lásd még