J-D*_*awG 10 asp.net web-applications asp.net-core
所以他们改变了他们在asp.net 5 rc1和rc2之间引导web应用程序的方式.
它曾经是:
public static void Main(string[] args) => WebApplication.Run<Startup>(args);
Run Code Online (Sandbox Code Playgroud)
但在RC2中,我不再引用静态类WebApplication.有任何想法吗?
Sha*_*tin 20
在对你的问题进行了一段时间的反思后,我认为它有三个部分.
WebApplication
)在rc1中dnx.exe
引导您的应用程序,而在rc2
您编译的控制台应用程序(foo.exe
)中执行引导.通过引导,我的意思是通过创建进程,将Core CLR加载到RAM中,以及查找应用程序的入口点来启动托管应用程序.这dnx.exe
在rc1中是必需的,因为您的Web应用程序仅假装是控制台应用程序,而在rc2中,您的Web应用程序是一个真正的控制台应用程序,以及它自己的可执行文件.使控制台应用程序成为Web应用程序的原因是它使用ASP.NET核心库.
在rc1和rc2中,应用程序入口点就是Main()
方法.这就是我们放置我们想要运行的第一行代码的地方.这是有道理的,当我们认为ASP.NET Core 在控制台应用程序中运行时,控制台应用程序的默认入口点是它的Main()
方法.
在rc1和rc2中,该Main()
方法调用ASP.NET Core库,第一次调用ASP.NET Core代码创建ASP.NET Core主机.在rc1中我们开始使用WebApplication.Run<SomeClass>()
.在rc2中,我们转而直接向管道添加中间件并调用new WebHostBuilder().FluentMiddlewareCall()...Build()
.这就是我们所谓的ASP.NET核心主机,而不是应用程序的托管入口点.这是一个重要的区别.
在ASP.NET Core rc2中,您的应用程序是它自己的可执行文件,它有自己的引导代码.它的托管入口点是它的Main()
方法.它成为一个Web应用程序,因为它引用ASP.NET Core库并使用创建Web主机new WebHostBuilder()
.
// application entry point
public static void Main(string[] args)
{
// code here will run before the host.
Console.WriteLine("Hello world.");
// this is the rc1 host call.
// WebApplication.Run<Startup>(args);
// this is the rc2 host call
var host = new WebHostBuilder()...
// you shouldn't do work after the host call.
}
Run Code Online (Sandbox Code Playgroud)
在ASP.NET 4.x中,Internet信息服务(IIS)可执行文件(InetMgr.exe
)加载公共语言运行时(CLR)并使用它来创建/调用托管Web应用程序的入口点.这个入口点就是HttpApplication.Application_Start()
事件,我们可以通过Global.asax处理它来添加我们的第一行代码.
InetMgr.exe > Runtime > HttpApplication/Global.asax > Application_Start()
Run Code Online (Sandbox Code Playgroud)
在ASP.NET Core rc1中: DNX(dnx.exe
)可执行文件加载Core CLR并使用它来创建/调用我们的应用程序的Main()
方法.我们调用WebApplication
它的Run<SomeClass>()
方法,从而创建一个主机并构建一个HTTP管道.
Dnx.exe > Runtime > Main() > WebApplication.Run<SomeClass>() > ...
Run Code Online (Sandbox Code Playgroud)
在ASP.NET Core rc2中我们的应用程序编译的executable(foo.exe
)加载Core CLR来创建/调用我们的应用程序Main()
方法.我们调用WebHostBuilder()
,从而创建一个主机并构建一个HTTP管道.
ConsoleApp.exe > Runtime > Main() > WebHostBuilder() > ...
Run Code Online (Sandbox Code Playgroud)
https://blogs.msdn.microsoft.com/dotnet/2015/11/18/announcing-net-core-and-asp-net-5-rc
http://docs.asp.net/en/latest/tutorials/your-first-aspnet-application.html
https://github.com/aspnet/Home/wiki/DNX-structure
来自公告repo:托管将WebApplication重命名为WebHost
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseDefaultConfiguration(args)
.UseIISPlatformHandlerUrl()
.UseStartup("MusicStore")
.Build();
host.Run();
}
Run Code Online (Sandbox Code Playgroud)
这个例子来自MusicStore
归档时间: |
|
查看次数: |
3530 次 |
最近记录: |