Aracılığıyla paylaş


ASP.NET Uyumluluğu

ASPNetCompatibility örneği, Windows Communication Foundation'da (WCF) ASP.NET Uyumluluk modunu etkinleştirmeyi gösterir. ASP.NET Uyumluluk modunda çalışan hizmetler, ASP.NET uygulama işlem hattına tam olarak katılır ve dosya/URL yetkilendirmesi, oturum durumu ve HttpContext sınıf gibi ASP.NET özelliklerinden yararlanabilir. HttpContext sınıfı tanımlama bilgilerine, oturumlara ve diğer ASP.NET özelliklerine erişim sağlar. Bu mod, bağlamaların HTTP aktarımını kullanmasını ve hizmetin iis'de barındırılması gerekir.

Bu örnekte, istemci bir konsol uygulamasıdır (yürütülebilir bir uygulamadır) ve hizmet Internet Information Services'te (IIS) barındırılır.

Not

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda bulunur.

Bu örneğin çalışması için bir .NET Framework 4 uygulama havuzu gerekir. Yeni bir uygulama havuzu oluşturmak veya varsayılan uygulama havuzunu değiştirmek için aşağıdaki adımları izleyin.

  1. Denetim Masası'nı açın. Sistem ve Güvenlik başlığı altında Yönetici istrative Tools uygulaması'nı açın. Internet Information Services (IIS) Yöneticisi uygulamasını açın.

  2. Bağlan ions bölmesinde ağaç görünümü genişletin. Uygulama Havuzları düğümünü seçin.

  3. Varsayılan uygulama havuzunu .NET Framework 4 kullanacak şekilde ayarlamak için (var olan sitelerle uyumsuzluk sorunlarına neden olabilir), DefaultAppPool liste öğesine sağ tıklayın ve Temel Ayarlar... öğesini seçin. .Net Framework Sürümü açılır öğesini .Net Framework v4.0.30128 (veya üzeri) olarak ayarlayın.

  4. .NET Framework 4 kullanan yeni bir uygulama havuzu oluşturmak için (diğer uygulamaların uyumluluğunu korumak için), Uygulama Havuzları düğümüne sağ tıklayın ve Uygulama Havuzu Ekle...'yi seçin. Yeni uygulama havuzunu adlandırın ve .Net Framework Sürümü açılır öğesini .Net Framework v4.0.30128 (veya üzeri) olarak ayarlayın. Aşağıdaki kurulum adımlarını çalıştırdıktan sonra ServiceModelSamples uygulamasına sağ tıklayın ve Uygulamayı Yönet, Gelişmiş Ayarlar... öğesini seçin. Uygulama Havuzunu yeni uygulama havuzuna ayarlayın.

Bu örnek, bir hesap makinesi hizmeti uygulayan Başlarken'i temel alır. Sözleşme ICalculator , çalışan bir sonuç tutularak bir dizi işlemin gerçekleştirilmesine izin verecek şekilde sözleşme olarak ICalculatorSession değiştirildi.

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

Bir hesaplama yapmak için birden çok hizmet işlemi çağrıldığı için hizmet, özelliği kullanarak her istemci için durumu korur. İstemci çağırarak geçerli sonucu alabilir ve çağrısı ResultClearyaparak sonucu sıfıra temizleyebilir.

Hizmet, her istemci oturumu için sonucu depolamak için ASP.NET oturumunu kullanır. Bu, hizmetin hizmete yapılan birden çok çağrıda her istemci için çalışan sonucu korumasını sağlar.

Not

ASP.NET oturum durumu ve WCF oturumları çok farklıdır. WCF oturumlarıyla ilgili ayrıntılar için bkz . Oturum .

Hizmetin ASP.NET oturum durumuna yakın bir bağımlılığı vardır ve düzgün çalışması için ASP.NET uyumluluk modunu gerektirir. Bu gereksinimler, özniteliği uygulanarak AspNetCompatibilityRequirements bildirim temelli olarak ifade edilir.

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

Örneği çalıştırdığınızda, işlem istekleri ve yanıtları istemci konsolu penceresinde görüntülenir. İstemciyi kapatmak için istemci penceresinde ENTER tuşuna basın.

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

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri için Tek Seferlik Kurulum Yordamı'nı gerçekleştirdiğinizden emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örnekleri Oluşturma başlığındaki yönergeleri izleyin.

  3. Çözüm oluşturulduktan sonra, IIS 7.0'da ServiceModelSamples Uygulamasını ayarlamak için Setup.bat çalıştırın. ServiceModelSamples dizini artık iis 7.0 uygulaması olarak görünmelidir.

  4. Örneği tek bilgisayarlı veya bilgisayarlar arası bir yapılandırmada çalıştırmak için Windows Communication Foundation Örneklerini Çalıştırma başlığındaki yönergeleri izleyin.

Ayrıca bkz.