Aracılığıyla paylaş


OWIN Başlangıç Sınıfı Algılama

Bu öğreticide, hangi OWIN başlangıç sınıfının yüklendiğinin nasıl yapılandırıldığı gösterilmektedir. OWIN hakkında daha fazla bilgi için bkz. Project Katana'ya Genel Bakış. Bu öğretici Rick Anderson ( @RickAndMSFT ), Praburaj Thiagarajan ve Howard Dierking ( @howard_dierking ) tarafından yazılmıştır.

Önkoşullar

Visual Studio 2017

OWIN Başlangıç Sınıfı Algılama

Her OWIN Uygulaması, uygulama işlem hattı için bileşenleri belirttiğiniz bir başlangıç sınıfına sahiptir. Seçtiğiniz barındırma modeline (OwinHost, IIS ve IIS-Express) bağlı olarak başlangıç sınıfınızı çalışma zamanına bağlamanın farklı yolları vardır. Bu öğreticide gösterilen başlangıç sınıfı her barındırma uygulamasında kullanılabilir. Aşağıdaki yaklaşımlardan birini kullanarak başlangıç sınıfını barındırma çalışma zamanına bağlarsınız:

  1. Adlandırma Kuralı: Katana, derleme adı veya genel ad alanıyla eşleşen ad alanında adlı Startup bir sınıf arar.

  2. OwinStartup Özniteliği: Bu, çoğu geliştiricinin başlangıç sınıfını belirtmek için benimseyeceği yaklaşımdır. Aşağıdaki öznitelik, başlangıç sınıfını TestStartup ad alanında sınıfına StartupDemo ayarlar.

    [assembly: OwinStartup(typeof(StartupDemo.TestStartup))]
    

    OwinStartup özniteliği adlandırma kuralını geçersiz kılar. Bu öznitelikle kolay bir ad da belirtebilirsiniz, ancak kolay ad kullanmak için yapılandırma dosyasındaki appSetting öğesini de kullanmanız gerekir.

  3. Yapılandırma dosyasındaki appSetting öğesi: appSetting öğesi özniteliğini ve adlandırma kuralını geçersiz kılar OwinStartup . Birden çok başlangıç sınıfınız (her biri bir OwinStartup özniteliği kullanarak) olabilir ve aşağıdakine benzer işaretlemeyi kullanarak bir yapılandırma dosyasına hangi başlangıç sınıfının yüklendiğini yapılandırabilirsiniz:

    <appSettings>  
      <add key="owin:appStartup" value="StartupDemo.ProductionStartup" />
    </appSettings>
    

    Başlangıç sınıfını ve derlemeyi açıkça belirten aşağıdaki anahtar da kullanılabilir:

    <add key="owin:appStartup" value="StartupDemo.ProductionStartup, StartupDemo" />
    

    Yapılandırma dosyasında aşağıdaki XML, kolay başlangıç sınıfı adını ProductionConfigurationbelirtir.

    <appSettings>  
      <add key="owin:appStartup" value="ProductionConfiguration" />       
    </appSettings>
    

    Yukarıdaki işaretleme, kolay bir ad belirten ve sınıfın ProductionStartup2 çalışmasına neden olan aşağıdaki OwinStartup öznitelikle kullanılmalıdır.

    [assembly: OwinStartup("ProductionConfiguration", typeof(StartupDemo.ProductionStartup2))]
    
    namespace StartupDemo
    {
        public class ProductionStartup
        {
            public void Configuration(IAppBuilder app)
            {
                app.Run(context =>
                {
                    string t = DateTime.Now.Millisecond.ToString();
                    return context.Response.WriteAsync(t + " Production OWIN App");
                });
            }
        }
        public class ProductionStartup2
        {
            public void Configuration(IAppBuilder app)
            {
                app.Run(context =>
                {
                    string t = DateTime.Now.Millisecond.ToString();
                    return context.Response.WriteAsync(t + " 2nd Production OWIN App");
                });
            }
        }
    }
    
  4. OWIN başlatma bulmayı devre dışı bırakmak için web.config dosyasına değerini "false" ekleyinappSetting owin:AutomaticAppStartup.

    <add key="owin:AutomaticAppStartup" value="false" />
    

OWIN Startup kullanarak ASP.NET Web Uygulaması oluşturma

  1. Boş bir Asp.Net web uygulaması oluşturun ve startupDemo olarak adlandırabilirsiniz. - NuGet paket yöneticisini kullanarak yükleyin Microsoft.Owin.Host.SystemWeb . Araçlar menüsünde NuGet Paket Yöneticisi'ni ve ardından Paket Yöneticisi Konsolu'nu seçin. Aşağıdaki komutu girin:

    Install-Package Microsoft.Owin.Host.SystemWeb
    
  2. Bir OWIN başlangıç sınıfı ekleyin. Visual Studio 2017'de projeye sağ tıklayın ve Sınıf Ekle'yi seçin.- Yeni Öğe Ekle iletişim kutusunda, arama alanına OWIN yazın ve adı Startup.cs olarak değiştirin ve ekle'yi seçin.

    Yeni öğe ekle iletişim kutusunun ekran görüntüsü.

    Bir sonraki Owin Startup sınıfını eklemek istediğinizde, bu sınıf Ekle menüsünden kullanılabilir.

    Owin başlangıç sınıfı eklemek için Ekle menüsünün ekran görüntüsü.

    Alternatif olarak projeye sağ tıklayıp Ekle'yi, ardından Yeni Öğe'yi ve ardından Owin Startup sınıfını seçebilirsiniz.

    Owin Başlangıç sınıfını seçin öğesinin ekran görüntüsü.

  • Startup.cs dosyasında oluşturulan kodu aşağıdakilerle değiştirin:

    using System;
    using System.Threading.Tasks;
    using Microsoft.Owin;
    using Owin;
    using System.IO;
    
    //[assembly: OwinStartup(typeof(StartupDemo.Startup))]
    
    namespace StartupDemo
    {
       public class Startup
       {
          public void Configuration(IAppBuilder app)
          {
             app.Use((context, next) =>
             {
                TextWriter output = context.Get<TextWriter>("host.TraceOutput");
                return next().ContinueWith(result =>
                {
                   output.WriteLine("Scheme {0} : Method {1} : Path {2} : MS {3}",
                   context.Request.Scheme, context.Request.Method, context.Request.Path, getTime());
                });
             });
    
             app.Run(async context =>
             {
                await context.Response.WriteAsync(getTime() + " My First OWIN App");
             });
          }
    
          string getTime()
          {
             return DateTime.Now.Millisecond.ToString();
          }
       }
    }
    

    Lambda app.Use ifadesi, belirtilen ara yazılım bileşenini OWIN işlem hattına kaydetmek için kullanılır. Bu durumda, gelen isteği yanıtlamadan önce gelen isteklerin günlüğe kaydedilmesini ayarlıyoruz. next parametresi, işlem hattındaki bir sonraki bileşene temsilcidir ( Func<Görevi>). app.Run Lambda ifadesi, işlem hattını gelen isteklere bağlar ve yanıt mekanizmasını sağlar.

    Not

    Yukarıdaki kodda özniteliğini OwinStartup açıklama satırı yaptık ve .- Uygulamayı çalıştırmak için F5 tuşuna basın adlı Startup sınıfı çalıştırma kuralına bağlıyız. Yenilemeye birkaç kez basın.

    Çalışma zamanı uygulamasının ekran görüntüsü.

    Not: Bu öğreticideki görüntülerde gösterilen sayı, gördüğünüz sayıyla eşleşmez. Sayfayı yenilediğinizde yeni bir yanıt göstermek için milisaniye dizesi kullanılır. Çıktı penceresinde izleme bilgilerini görebilirsiniz.

    Çıkış penceresinin ekran görüntüsü.

Daha Fazla Başlangıç Sınıfı Ekle

Bu bölümde başka bir Başlangıç sınıfı ekleyeceğiz. Uygulamanıza birden çok OWIN başlangıç sınıfı ekleyebilirsiniz. Örneğin, geliştirme, test ve üretim için başlangıç sınıfları oluşturmak isteyebilirsiniz.

  1. Yeni bir OWIN Başlangıç sınıfı oluşturun ve olarak adlandırabilirsiniz ProductionStartup.

  2. Oluşturulan kodu aşağıdakilerle değiştirin:

    using System;
    using System.Threading.Tasks;
    using Microsoft.Owin;
    using Owin;
    
    [assembly: OwinStartup(typeof(StartupDemo.ProductionStartup))]
    
    namespace StartupDemo
    {
        public class ProductionStartup
        {
            public void Configuration(IAppBuilder app)
            {
                app.Run(context =>
                {
                    string t = DateTime.Now.Millisecond.ToString();
                    return context.Response.WriteAsync(t + " Production OWIN App");
                });
            }
        }
    }
    
  3. Uygulamayı çalıştırmak için Control F5 tuşuna basın. OwinStartup özniteliği üretim başlangıç sınıfının çalıştırılır olduğunu belirtir.

    Üretim başlangıç sınıfının ekran görüntüsü.

  4. Başka bir OWIN Başlangıç sınıfı oluşturun ve olarak adlandırabilirsiniz TestStartup.

  5. Oluşturulan kodu aşağıdakilerle değiştirin:

    using System;
    using System.Threading.Tasks;
    using Microsoft.Owin;
    using Owin;
    
    [assembly: OwinStartup("TestingConfiguration", typeof(StartupDemo.TestStartup))]
    
    namespace StartupDemo
    {
        public class TestStartup
        {
            public void Configuration(IAppBuilder app)
            {
                app.Run(context =>
                {
                    string t = DateTime.Now.Millisecond.ToString();
                    return context.Response.WriteAsync(t + " Test OWIN App");
                });
            }
        }
    }
    

    Yukarıdaki OwinStartup öznitelik aşırı yüklemesi, Başlangıç sınıfının kolay adı olarak belirtirTestingConfiguration.

  6. web.config dosyasını açın ve Başlangıç sınıfının kolay adını belirten OWIN Uygulaması başlangıç anahtarını ekleyin:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <appSettings>
        <add key="owin:appStartup" value="TestingConfiguration" />
      </appSettings>
      <system.web>
        <compilation debug="true" targetFramework="4.5" />
        <httpRuntime targetFramework="4.5" />
      </system.web>
    </configuration>
    
  7. Uygulamayı çalıştırmak için Control F5 tuşuna basın. Uygulama ayarları öğesi etkileyen bir öğedir ve test yapılandırması çalıştırılır.

    Test yapılandırmasının ekran görüntüsü.

  8. Sınıfındaki özniteliğinden OwinStartupTestStartupkolay adı kaldırın.

    [assembly: OwinStartup(typeof(StartupDemo.TestStartup))]
    
  9. web.config dosyasındaki OWIN Uygulama başlangıç anahtarını aşağıdakilerle değiştirin:

    <add key="owin:appStartup" value="StartupDemo.TestStartup" />
    
  10. Her sınıftaki OwinStartup özniteliği Visual Studio tarafından oluşturulan varsayılan öznitelik koduna geri döndür:

    [assembly: OwinStartup(typeof(StartupDemo.Startup))]
    [assembly: OwinStartup(typeof(StartupDemo.ProductionStartup))]
    [assembly: OwinStartup(typeof(StartupDemo.TestStartup))]
    

    Aşağıdaki OWIN Uygulaması başlangıç anahtarlarının her biri üretim sınıfının çalışmasına neden olur.

    <add key="owin:appStartup" value="StartupDemo.ProductionStartup" />
    <add key="owin:appStartup" value="StartupDemo.ProductionStartup, StartupDemo" />
    <add key="owin:appStartup" value="StartupDemo.ProductionStartup.Configuration, StartupDemo" />
    

    Son başlangıç anahtarı, başlangıç yapılandırma yöntemini belirtir. Aşağıdaki OWIN Uygulaması başlangıç anahtarı, yapılandırma sınıfının adını olarak değiştirmenize MyConfiguration olanak tanır.

    <add key="owin:appStartup" value="StartupDemo.ProductionStartup2.MyConfiguration" />
    

Owinhost.exe kullanma

  1. Web.config dosyasını aşağıdaki işaretlemeyle değiştirin:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
       <appSettings>
          <add key="owin:appStartup" value="StartupDemo.Startup" />
          <add key="owin:appStartup" value="StartupDemo.TestStartup" />
       </appSettings>
      <system.web>
        <compilation debug="true" targetFramework="4.5" />
        <httpRuntime targetFramework="4.5" />
      </system.web>
    </configuration>
    

    Son anahtar kazanır, bu nedenle bu durumda TestStartup belirtilir.

  2. PMC'den Owinhost'u yükleyin:

    Install-Package OwinHost
    
  3. Uygulama klasörüne ( Web.config dosyasını içeren klasör) gidin ve komut istemine şunu yazın:

    ..\packages\Owinhost<Version>\tools\Owinhost.exe
    

    Komut penceresi şunu gösterir:

    C:\StartupDemo\StartupDemo>..\packages\OwinHost.2.0.0\tools\Owin
    Host.exe
    Starting with the default port: 5000 (http://localhost:5000/)
    Started successfully
    Press Enter to exit
    
  4. URL'si http://localhost:5000/ile bir tarayıcı başlatın.

    localhost URL'sine sahip bir tarayıcı başlatma işleminin ekran görüntüsü.

    OwinHost, yukarıda listelenen başlangıç kurallarını kabul etti.

  5. Komut penceresinde Enter tuşuna basarak OwinHost'dan çıkın.

  6. ProductionStartup sınıfında, ProductionConfiguration'ın kolay adını belirten aşağıdaki OwinStartup özniteliğini ekleyin.

    [assembly: OwinStartup("ProductionConfiguration", 
               typeof(StartupDemo.ProductionStartup))]
    
  7. Komut istemine şunu yazın:

    ..\packages\OwinHost.2.0.0\tools\OwinHost.exe ProductionConfiguration
    

    Üretim başlangıç sınıfı yüklenir. Üretim başlangıç sınıfının ekran görüntüsü.

    Uygulamamızın birden çok başlangıç sınıfı vardır ve bu örnekte çalışma zamanına kadar hangi başlangıç sınıfının yüklendiğini erteledik.

  8. Aşağıdaki çalışma zamanı başlatma seçeneklerini test edin:

    ..\packages\OwinHost.2.0.0-rc1\tools\OwinHost.exe StartupDemo.TestStartup
    ..\packages\OwinHost.2.0.0-rc1\tools\OwinHost.exe "StartupDemo.TestStartup,StartupDemo"
    ..\packages\OwinHost.2.0.0-rc1\tools\OwinHost.exe StartupDemo.TestStartup.Configuration
    ..\packages\OwinHost.2.0.0-rc1\tools\OwinHost.exe "StartupDemo.TestStartup.Configuration,StartupDemo"