zoukankan      html  css  js  c++  java
  • ASPNetCore启动流程和托管模式(1)

    直接上代码,重点文字看注释

    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>();
                    });
        }
    }

      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();
                });
            }
        }
    人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。
  • 相关阅读:
    RMAN异机还原遭遇ORA-19698错误案例
    Linux sendmail发送邮件失败诊断案例(一)
    Oracle system identifier(SID) "xxx" alread exits. Specify another SID
    ORA-12516:TNS:listener could not find available handler with matching protocol stack
    ORACLE编译失效对象小结
    Win7 安装SQL SERVER 2012需要SP1补丁
    SQL SERVER出现大量一致性错误的解决方法
    MS SQL统计信息浅析下篇
    Dell PowerVault TL4000 磁带机卡带问题
    虚拟机VMWARE上ORACLE License 的计算
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/14693255.html
Copyright © 2011-2022 走看看