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.asaxdosya 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_Startsenin durumunda Global.asaxdosya veya yeni kullanmak <system.webserver>sizin bölümüne web.configdosyası.
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, IAppBuilderbir Startupsınıfta karşılaştığınız arabirimi ve Microsoft tarafından sağlanan bazı OWIN ara katman bileşenleri (OMC) sağlar. kullanmaIAppBuildertemel 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 Startupsı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.asaxkullanmak 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.csdosyadır. Burada ana makinenizi yapılandırırsınız ve yine Startupboru hattınızı yapılandırdığınız sınıfınızı belirtirsiniz . OWIN ( IAppBuilder.UseOwinuzatma 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/…