zoukankan      html  css  js  c++  java
  • (1)ASP.NET Core2.2 应用启动Startup类简介

    1.前言

    Core与早期版本的 ASP.NET 对比,配置应用程序的方式的 Global.asax、FilterConfig.cs和RouteConfig.cs 都被Program.cs 和 Startup.cs取代了。Program.cs作为Web应用程序的默认入口,在没有任何修改的情况下,会调用同目录下Startup.cs中的ConfigureServices 和 Configure方法。

    2.Startup类

    Startup类配置服务和应用的请求管道。Program.Main方法是应用程序的托管入口。在构建应用程序的主机(WebHost)时,系统为应用程序指定 Startup 类,而Main入口通过主机生成器(IWebHostBuilder)调用Build时,生成对应的应用程序的主机(WebHost),并启动运行(Run)。

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }
    
        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>();
    }

    2.1 当应用程序启动时调用 Startup类

    当应用程序启动时,运行时会调用Startup类的 ConfigureServices 和 Configure方法:

    public class Startup
    {
        // Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            ...
        }
    
        // Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app)
        {
            ...
        }
    }

    Startup类必须定义Configure方法,但是可选择定义一个ConfigureServices 方法,这些方法将在应用程序启动时被调用。下面我们再来了解下这两个方法。

    3.ConfigureServices方法

    用于设置应用程序所需要的服务。
    ●该方法可选择定义或不定义。
    ●在Configure方法配置应用程序服务之前被主机(WebHost)调用。
    ●其中按常规设置配置选项(appsettings.json)。
    对于需要大量设置的功能,IServiceCollection 上有 Add{Service} 扩展方法。 典型 ASP.NET Core 应用将为实体框架(Entity Framework)、标识(Identity)和 MVC 注册服务:

    public void ConfigureServices(IServiceCollection services)
    {
        // 添加 Entity Framework服务
        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                _Configuration.GetConnectionString("DefaultConnection")));
        services.AddDefaultIdentity<IdentityUser>()
            .AddDefaultUI(UIFramework.Bootstrap4)
            .AddEntityFrameworkStores<ApplicationDbContext>();
    
        // 添加MVC设置兼容版本服务.
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    
        // 添加应用程序服务.
        services.AddTransient<IEmailSender, AuthMessageSender>();
        services.AddTransient<ISmsSender, AuthMessageSender>();
    }

    将服务添加到服务容器,使其在应用程序和Configure方法中可用。服务通过依赖关系注入(DI)或 ApplicationServices 进行解析。

    4.Configure方法

    用于指定应用程序响应HTTP请求的方式。
    可通过将中间件(middleware)组件添加到IApplicationBuilder实例来配置请求管道。Configure方法可使用 IApplicationBuilder,但未在服务容器中注册。托管创建 IApplicationBuilder并将其直接传递到Configure。
    通俗点来说,Configure方法用于指定ASP.NET应用程序将如何响应每个HTTP请求,你可以配置每个请求都接受相同的响应。而更复杂的管道配置可以封装于中间件(middleware)中,并通过扩展方法添加到IApplicationBuilder上。Configure方法必须接受一个IApplicationBuilder参数。

    4.1 ASP.NET Core模板配置的管道支持:

    ●开发人员异常页
    ●异常处理程序
    ●HTTP 严格传输安全性 (HSTS)
    ●HTTPS 重定向
    ●静态文件
    ●一般数据保护条例 (GDPR)
    ●ASP.NET Core MVC 和 Razor Pages

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }
    
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();
    
        app.UseMvc();
    }

    5.总结

    ●Program的Main方法用于创建WebHost服务,调用启动类Startup。
    ●Startup中的ConfigureServices方法用于将服务注入到IServiceCollection服务容器中。
    ●Startup中的Configure方法用于应用响应HTTP请求,将中间件注册到ApplicationBuilder中来配置请求管道。

    参考文献:

    ASP.NET Core 中的应用启动

  • 相关阅读:
    SAP基础:定位点运算
    WDA基础十七:ALV不同行显示不同下拉
    WDA基础十六:ALV的颜色
    WEB UI基础八:链接跳转到标准的工单界面
    WDA基础十五:POPUP WINDOW
    CRM创建BP(END USER)
    CRM 员工创建并分配用户
    STRANS一:简单的XML转换
    WEB UI 上传URL附件(使用方法备份)
    FPM四:用OVP做查询跳转到明细
  • 原文地址:https://www.cnblogs.com/wzk153/p/10861384.html
Copyright © 2011-2022 走看看