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主机。

  • 相关阅读:
    HDU 1114 Piggy-Bank
    HDU 2955 Robberies
    NTOJ 290 动物统计(加强版)
    POJ 3624 Charm Bracelet
    HDU 2602 Bone Collector
    POJ 1523 SPF(无向图割顶)
    HDU 5311 Hidden String
    HDU 1421 搬寝室
    HDU 1058 Humble Numbers
    POJ 3259 Wormholes(spfa判负环)
  • 原文地址:https://www.cnblogs.com/yigegaozhongsheng/p/13375932.html
Copyright © 2011-2022 走看看