码迷,mamicode.com
首页 > Web开发 > 详细

Net Core基础知识:Startup 类

时间:2020-07-21 01:21:43      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:imu   情况   error   静态文件   check   col   string   程序   ogg   

Startup 类

  Startup类用于配置服务和应用的请求管道。

  1.使用ConfigureServices方法选择性的配置应用的服务,如Mvc。服务是一个提供应用功能的可重用组件。在ConfigureServices方法中注册服务,并通过依赖注入或ApplicationServices在整个应用中使用服务。

  2.使用Configure方法来创建应用的请求处理管道,注册中间件。

  在构建应用主机时指定 Startup 类。 通常,通过在Program.cs中调用 UseStartup<TStartup> 方法来指定 Startup 类。在应用启动时,ASP.NET Core 运行时会调用 ConfigureServices 和 Configure,必须定义Configure,ConfigureServices 可以选择的定义。

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

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

ConfigureServices 方法

  ConfigureServices是可以配置的、配置选项按约定设置,在Configure方法之前执行,并由主机调用以配置应用程序的服务。在调用Startup之前主机webhost会自己配置某些服务,例如Logging、依赖关系注入 (DI) 服务等。

  对于需要大量设置的功能,IServiceCollection 上有 Add{Service} 扩展方法。 例如,AddDbContext、AddDefaultIdentity、AddEntityFrameworkStores 和 AddRazorPages

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

 public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        }

Configure 方法

  Configure用于构建请求管道的中间件,来处理http请求,例如处理异常、静态文件等。

  每个 Use 扩展方法将一个或多个中间件组件添加到请求管道,例如UseStaticFiles 配置中间件提供静态文件。请求管道中的每个中间件组件负责调用管道中的下一个组件,或在适当情况下使链发生短路。可以在 Configure 方法签名中指定其他服务,如 IWebHostEnvironmentILoggerFactory 或 ConfigureServices 中定义的任何内容。 如果这些服务可用,则会被注入。

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseCookiePolicy();

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

不使用Startup配置Configure和ConfigureServices

   不使用Startup的话需要在Host上调用ConfigureServices和Configure方法,多次调用ConfigureSerivces将会追加到下一个方法,但是多次调用Configure只会使用最后一个调用的Configure方法。

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureServices(services =>
                {
                    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
                })
                .Configure(app =>
                {
                    app.UseHttpsRedirection();
                    app.UseStaticFiles();
                    app.UseCookiePolicy();
                });

Net Core基础知识:Startup 类

标签:imu   情况   error   静态文件   check   col   string   程序   ogg   

原文地址:https://www.cnblogs.com/xwc1996/p/13336098.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!