当一个 ASP.NET Core 应用程序执行的时候,.NET 运行时会去查找 Main()
方法,因为它是这个应用程序的起点。
然后,Main()
方法调用静态类WebHost
中的静态方法CreateDefaultBuilder()用于配置和设置 Web 服务器。
ASP.NET Core 应用程序可以托管在进程内(InProcess)或进程外(OutOfProcess)中。
若要配置 InProcess 宿主, 请将<AspNetCoreHostingModel>
添加到应用的项目文件中, 其中的值为 InProcess
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
当我们选择使用一个可用的项目模板,创建一个新的 ASP.NET Core 项目时,该项目默认为所有的 IIS 和 IIS Express 的配置都是作为进程内托管(InProcess)。
在 InProcess 托管的情况下,CreateDefaultBuilder()
方法调用UseIIS()
方法并在 IIS 工作进程**(w3wp.exe 或 iisexpress.exe)***内托管应用程序。
System.Diagnostics.Process.GetCurrentProcess().ProcessName
下图说明了 IIS、ASP.NET Core 模块和进程内托管的应用之间的关系:
Kestrel 是 ASP.NET Core 项目模板指定的默认 Web 服务器。
使用 Kestrel:
与反向代理服务器 (如 Internet Information Services (IIS)、Nginx 或 Apache)结合使用。 反向代理服务器接收来自 Internet 的 HTTP 请求,并将这些请求转发到 Kestrel。