Bu bir web uygulaması başlatmak / barındırma nasıl takip etmek oldukça kafa karıştırıcı olduğu için nasıl gelişti anlayışım. Küçük bir özet:
1. Klasik ASP.NET: Yalnızca zorunlu IIS kanalının son adımında çalıştırılacak uygulama kodunu yazın
2. OWIN'li ASP.NET: Bir .NET web sunucusu yapılandırın ve uygulama kodunuzu yazın. Artık doğrudan IIS ile eşleşmediği için artık kullanmak zorunda değilsiniz.
3. ASP.NET Core: Ana makineyi ve web sunucusunu uygulama kodunuzu kullanacak ve yazacak şekilde yapılandırın. Tam .NET Framework yerine .NET Core'u hedeflerseniz bir .NET web sunucusu kullanmak zorunlu değildir.
Şimdi nasıl çalıştığına ve uygulamayı başlatmak için hangi sınıfların kullanıldığına dair biraz daha ayrıntıya gireceğim:
Klasik ASP.NET
Klasik ASP.NET uygulamalarında Global.asax
dosya giriş noktası olarak bulunur. Bu uygulamalar yalnızca IIS'de çalıştırılabilir ve kodunuz IIS kanalının sonunda yürütülür (bu nedenle IIS, kodunuz çalışmaya başlamadan önce CORS, kimlik doğrulamasından ... sorumludur). IIS 7'den beri uygulamanızı ASP.NET çalışma zamanını IIS'ye entegre eden tümleşik modda çalıştırabilirsiniz. Bu mümkün değildi yapılandırmak işlevselliği için kodunuzu sağlayan önce gibi (ya da yalnızca IIS kendisi) url yeniden yazma içinde Application_Start
senin durumunda Global.asax
dosya veya yeni kullanmak <system.webserver>
sizin bölümüne web.config
dosyası.
OWIN'li ASP.NET
Her şeyden önce OWIN bir kütüphane değil, .NET web sunucularının (örneğin IIS) web uygulamalarıyla nasıl etkileşime girdiğinin bir özelliğidir. Microsoft, Katana adlı bir OWIN uygulamasına sahiptir (birkaç farklı NuGet paketiyle dağıtılır). Bu uygulama, IAppBuilder
bir Startup
sınıfta karşılaştığınız arabirimi ve Microsoft tarafından sağlanan bazı OWIN ara katman bileşenleri (OMC) sağlar. kullanmaIAppBuilder
temel olarak, IIS sunucusuna bağlanmak yerine web sunucusu için boru hattı oluşturmak için (yukarıdaki noktada olduğu gibi yalnızca IIS7 + 'daki ASP.NET boru hattına ek olarak) ara katman yazılımını bir tak ve çalıştır yöntemiyle oluşturursunuz (ancak şimdi CORS için bir ara katman bileşeni, kimlik doğrulama için bir ara katman bileşeni ...). Bu nedenle, uygulamanız artık IIS ile özel olarak eşleşmemiştir ve herhangi bir .NET Web sunucusunda çalıştırabilirsiniz, örneğin:
- OwinHost paketi Katana web sunucusu sayesinde uygulama kendini ana kullanılabilir.
- Microsoft.Owin.Host.SystemWeb paket içten doğru ömür boyu olaylara sizin ortakatmanını abone olarak, entegre modda IIS7 + daki Owin uygulamasını barındırmak için kullanılır.
Her şeyi bu kadar kafa karıştırıcı yapan şey, her ikisi de benzer şeyler yapabiliyorken Global.asax
, OWIN Startup
sınıfıyla birlikte desteklenmesidir . Örneğin Global.asax
, gerçekten kafa karıştırıcı olan OWIN ara katman yazılımını kullanarak CORS'yi ve kimlik doğrulamasını uygulayabilirsiniz .
Genel kuralım, OWIN eklemem gerektiğinde Global.asax
kullanmak için dosyayı tamamen kaldırmaktır Startup
.
ASP.NET Çekirdeği
ASP.NET Core bir sonraki evrimdir ve şimdi .NET Core veya tam .NET Framework'ü hedefleyebilirsiniz. .NET Core'u hedeflediğinizde, uygulamanızı .NET Standard'ı destekleyen herhangi bir ana bilgisayarda çalıştırabilirsiniz. Bu, artık bir .NET web sunucusu ile sınırlı olmadığınız anlamına gelir (önceki noktada olduğu gibi), ancak uygulamanızı Docker kapsayıcılarında, bir linux web sunucusunda, IIS'de barındırabilirsiniz ...
Bir ASP.NET Core web uygulaması için giriş noktası Program.cs
dosyadır. Burada ana makinenizi yapılandırırsınız ve yine Startup
boru hattınızı yapılandırdığınız sınıfınızı belirtirsiniz . OWIN ( IAppBuilder.UseOwin
uzatma yöntemini kullanarak ) kullanmak isteğe bağlıdır, ancak tam olarak desteklenmektedir .
AreaRegistration.RegisterAllAreas();
Bu yöntemin başlatma sırasında bu şekilde kullanılmasına izin verilmediğinden, benim için bir hataya neden olduApplication_Start
. Ancak, uygulamam bir API ve görünüşe göre bu yöntem yalnızca MVC uygulamaları için kullanışlıdır: stackoverflow.com/questions/18404637/…