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
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:
Adlandırma Kuralı: Katana, derleme adı veya genel ad alanıyla eşleşen ad alanında adlı
Startup
bir sınıf arar.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ınaStartupDemo
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ındakiappSetting
öğesini de kullanmanız gerekir.Yapılandırma dosyasındaki appSetting öğesi:
appSetting
öğesi özniteliğini ve adlandırma kuralını geçersiz kılarOwinStartup
. Birden çok başlangıç sınıfınız (her biri birOwinStartup
ö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ı
ProductionConfiguration
belirtir.<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ğıdakiOwinStartup
ö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"); }); } } }
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
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
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.
Bir sonraki Owin Startup sınıfını eklemek istediğinizde, bu sınıf Ekle menüsünden kullanılabilir.
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.
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.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.
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.
Yeni bir OWIN Başlangıç sınıfı oluşturun ve olarak adlandırabilirsiniz
ProductionStartup
.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"); }); } } }
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.Başka bir OWIN Başlangıç sınıfı oluşturun ve olarak adlandırabilirsiniz
TestStartup
.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
.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>
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.
Sınıfındaki özniteliğinden
OwinStartup
TestStartup
kolay adı kaldırın.[assembly: OwinStartup(typeof(StartupDemo.TestStartup))]
web.config dosyasındaki OWIN Uygulama başlangıç anahtarını aşağıdakilerle değiştirin:
<add key="owin:appStartup" value="StartupDemo.TestStartup" />
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
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.PMC'den Owinhost'u yükleyin:
Install-Package OwinHost
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
URL'si
http://localhost:5000/
ile bir tarayıcı başlatın.OwinHost, yukarıda listelenen başlangıç kurallarını kabul etti.
Komut penceresinde Enter tuşuna basarak OwinHost'dan çıkın.
ProductionStartup
sınıfında, ProductionConfiguration'ın kolay adını belirten aşağıdaki OwinStartup özniteliğini ekleyin.[assembly: OwinStartup("ProductionConfiguration", typeof(StartupDemo.ProductionStartup))]
Komut istemine şunu yazın:
..\packages\OwinHost.2.0.0\tools\OwinHost.exe ProductionConfiguration
Üretim başlangıç sınıfı yüklenir.
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.
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"
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin