zoukankan      html  css  js  c++  java
  • ASP.Net Core Startup类

    我们了解了Program类如何负责创建和配置Web主机。但是,在构建和运行主机之前,Program类将调用startup类以进行进一步配置。它从类中调用Configure&ConfigureServices方法。

    什么是Startup类

    ASP.NET Core 启动(startup.cs)类是一个简单的类,不继承任何接口。这是我们配置请求管道和中间件的地方。我们还可以配置服务并将其添加到依赖项注入容器中。该类必须包含方法Configure,并且可以选择性的包含ConfigureServices方法。它类似于经典ASP.NET中的global.asax。  

    为什么要使用Startup类?

    Program类与Startup类是ASP.NET Core应用程序中最重要的两个类。应用程序的所有配置都在这两个文件中进行。

    配置应用程序基础结构的Program类。

    Program配置应用程序基础设施。program类在启动时创建web主机。然后,它配置日志记录DI容器。配置系统,Kestrel Web服务器,IIS集成等。它还将框架服务添加到DI容器中,以便我们可以使用它。

    Startup类的作用

    Startup类是我们配置应用程序组件的地方。Startup类具有两个主要功能。

    1. 配置服务以进行依赖注入。
    2. 它配置请求管道,管道处理对应用程序发出的所有请求。

    Startup类的示例

    启动类通常命名为startup.cs。它位于项目根目录中。Main方法是应用程序的入口点。它配置WebHost,对其进行构建并运行。然后,主机接收HTTP请求,并将其传递到请求管道。WebHost在构建WebHost之前调用UseStartup方法。 

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
           .UseStartup<Startup>();   

    UseStartup方法指示WebHost在何处查找Startup类。启动类通过约定的方式命名。我们可以使用任何名称创建一个启动类。例如,如果我们希望将AppStartup用作Startup类,请记住将其包含在程序中

    .UseStartup<AppStartup>()

    启动中可用的服务

    服务

    目的

    IApplicationBuilder

    我们将此服务用于应用程序请求管道。

    IHostingEnvironment

    此服务提供当前的EnvironmentNameContentRootPathWebRootPathWeb根文件提供程序

    ILoggerFactory

    提供创建记录器的机制

    IServiceCollection

    这是一个DI容器。我们将服务添加到此容器中。

    方法

    可用服务

    Startup Constructor

    IHostingEnvironmentILoggerFactory

    ConfigureServices

    IServiceCollection

    Configure

    IApplicationBuilderIHostingEnvironmentILoggerFactory

    配置服务

    ConfigureServices是我们配置服务的方法。将服务添加到DI容器中。此方法是可选的。但是,如果存在,那么它是WebHost调用的第一个方法。ConfigureServices方法将服务实例(类型为IServiceCollection)作为参数。 服务的实例通过依赖注入注入到ConfigureService中。  

    public void ConfigureServices(IServiceCollection services) {

    IServiceCollection是DI容器。我们将服务添加到此容器中。  

    services.AddMvc();

    将服务添加到DI容器将使它们可用于依赖注入。这意味着我们可以在应用程序中的任何位置注入这些服务。依赖注入是ASP.NET Core的新功能之一。ASP.NET Core广泛使用依赖项注入。下面的示例显示了一种典型ConfigureServices方法。

    public void ConfigureServices(IServiceCollection services) {
      services.Configure<CookiePolicyOptions>(options =>
      {
         options.CheckConsentNeeded = context => true;
         options.MinimumSameSitePolicy = SameSiteMode.None;
      });
      services.AddMvc();
    }

    Configure

    Configure方法是必须的。在ConfigureServices方法之后调用它。configure方法允许我们配置ASP.NET Core请求管道。该请求管道指定应用程序应该如何响应HTTP请求。组成请求管道的组件称为中间件configure方法典型的配置如下所示。如果我们选择MVC Web应用程序(MVC)模板,那么Visual Studio生成如下的方法。

    // 运行时将调用此方法。 使用此方法来配置HTTP请求管道。
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
          {
            app.UseDeveloperExceptionPage();
          }
          app.UseStaticFiles();
          app.UseCors("AllowAll");
          app.UseAuthentication();
          app.UseMvc(routes =>
            routes.MapRoute(
                       name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
                });
    }

    Configure方法需要 提供IApplicationBuilderHostingEnvironment的实例。上面的代码没有注入ILoggerFactory,但是我们可以这样做。

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)

    然后,我们将中间件组件添加到IApplicationBuilder实例的实例中。第一行检查我们是否处于开发环境中。 如果是,它将使用扩展方法UseDeveloperExceptionPage注册DeveloperExceptionPage中间件。

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    在随后的几行中,我们将注册另外三个中间件。

    app.UseStaticFiles();
    app.UseCors("AllowAll");
    app.UseAuthentication();

    最后一行代码注册了MVC中间件。 在注册中间件时配置了路由。

    app.UseMvc(routes =>
      routes.MapRoute(
         name: "default",
         template: "{controller=Home}/{action=Index}/{id?}");
    });

    configure方法

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
      if (env.IsDevelopment())
      {
        app.UseDeveloperExceptionPage();
      }
      app.Run(async (context) =>
      {
        await context.Response.WriteAsync("Hello World!");
      });
    }

    我们使用应用程序的run方法来注册嵌入式中间件。启动类(startup.cs)类是我们配置应用程序组件的位置。可选ConfigureServices方法是我们注册DI服务的地方。Configure方法是我们建立请求管道的地方。然后,在构建和运行Web主机之前,CreateDefaultBuilder方法将读取启动内容以配置Web主机。

  • 相关阅读:
    python中列表,元组,字典常用操作方法的总结
    python中字符串常用方法总结
    tomcat运行报错Failed to start component [StandardEngine[Catalina].StandardHost[localhost].XXXX
    在Linux Ubuntu16.04中如何修改文件名
    【蓝桥杯训练】第五天1369
    【python3】raise,assert,nonlocal 关键字解读
    【python3】yield 关键字解读
    【蓝桥杯训练】第四天1294、1297
    【蓝桥杯训练】第四天1291、1293
    【蓝桥杯训练】第四天1285、1290
  • 原文地址:https://www.cnblogs.com/yigegaozhongsheng/p/13375932.html
Copyright © 2011-2022 走看看