Asp.Net Core应用启动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<www.shengryll.com IdentityUser>(www.dayuzaixianyL.cn)
  
  .AddDefaultUI(UIFramework.www.hnxinhe.cn   Bootstrap4)
  
  .AddEntityFrameworkStores<ApplicationDbContext>(www.baihuiyulegw.com);
  
  // 添加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(www.yunyougp.com IApplicationBuilder app, IHostingEnvironment env)
  
  {
  
  if (env.IsDevelopment())
  
  {
  
  app.UseDeveloperExceptionPage();
  
  }
  
  else
  
  {
  
  app.UseExceptionHandler(www.yunyouguoj.com"/Error");
  
  app.UseHsts();
  
  }
  
  app.UseHttpsRedirection();
  
  app.UseStaticFiles();
  
  app.UseCookiePolicy();
  
  app.UseMvc();
  
  }
  
  复制代码
  
  5.总结
  
  ●Program的main方法用于创建WebHost服务,调用启动类Startup。
  
  ●Startup中的ConfigureServices方法用于将服务注入到 IServiceCollection 服务容器中。
  
  ●Startup中的Configure方法用于应用响应HTTP请求,将中间件注册到ApplicationBuilder中来配置请求管道。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值