直接上代码,重点文字看注释
namespace ProNetCore { public class Program { public static void Main(string[] args) { //在内部会先配置K8s服务器和IIS相关,其他配置 IHostBuilder builder = Host.CreateDefaultBuilder(args); //启用用户配置的参数,其中包含我们注册的服务/组件以及请求处理管道相关内容 builder.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Test>(); }); //webhost 用来监听Http请求,就会跳转到Startup类中, //在Startup类中有Configure这个方法来可以处理:HTTP请求处理 IHost webhost = builder.Build();//走到这里会跳转到ConfigureServices()这个方法 webhost.Run();//Run的时候会到Configure()方法里 //CreateHostBuilder(args).Build().Run(); } public class Test { public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { await context.Response.WriteAsync($"ProcessName:{System.Diagnostics.Process.GetCurrentProcess().ProcessName}"); }); }); } } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); } }
![](https://img2020.cnblogs.com/blog/1089332/202104/1089332-20210423122646502-1477339573.png)
2种托管模式
1.InProcess(进程内/默认) 2.OutOf(进程外) //进程内比进程外提供更好的性能 //进程内有一个服务器:要么是IIS,要么是K8s //进程外有2个服务器:一个是内部服务器(K8s),一个是外部服务器(IIS,nginx....) //AspNetCore 内置的服务器是K8s //在调试的时候 //如果选择IIExpress进行调试:当前进程的名字就是IISExpress 在任务管理器里就会找到一个IISEXpress.exe的文件 //如果选择项目名称ProNetCore进行调试:当前进程的名字就是ProNetCore //IISExpress和IIS的区别: //1:IISExpress是轻量级版本,针对开发时优化的一个版本,在实际的生产过程中,往往使用的是IIS
通过dotnet core 进行启动项目
在浏览器中回车上面的URL都是ok的
public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } //将服务注册到中 IServiceCollection public void ConfigureServices(IServiceCollection services)//,ILoggingBuilder logging { services.AddControllers(); //logging.AddNLog(); services.AddLogging(); } //IApplicationBuilder:定义一个类,该类提供 用于配置应用程序的请求管道的 机制。 //IWebHostEnvironment:提供有关应用程序正在运行的 web 宿主环境的信息。 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) { if (env.IsDevelopment()) { //从管道捕获同步和异步 Exception 实例,并生成 HTML 错误响应 app.UseDeveloperExceptionPage(); } //添加用于将 HTTP 请求重定向到 HTTPS 的中间件。 app.UseHttpsRedirection(); //将 Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware 中间件添加到指定的 IApplicationBuilder 中。 app.UseRouting(); app.UseAuthorization(); loggerFactory.AddNLog(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } }