ASP.NET|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(); }
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)。
public void ConfigureServices(IServiceCollection services){// 添加 Entity Framework服务services.AddDbContext(options =>options.UseSqlServer(_Configuration.GetConnectionString("DefaultConnection"))); services.AddDefaultIdentity().AddDefaultUI(UIFramework.Bootstrap4).AddEntityFrameworkStores(); // 添加MVC设置兼容版本服务.services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); // 添加应用程序服务.services.AddTransient (); services.AddTransient (); }
将服务添加到服务容器,使其在应用程序和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中来配置请求管道。
推荐阅读
- OpenHarmony标准设备应用开发(一)——HelloWorld
- 盘点GPU三大应用市场
- FlyFish|FlyFish 2.0已发布,大屏开发应用更加灵活便捷
- 如何科学衡量广告投放效果(HMS|如何科学衡量广告投放效果?HMS Core分析服务助您科学归因)
- 基于.NetCore开发博客项目|基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客()
- CZGL.ProcessMetrics监控.NET应用
- Vue3+Nuxt3打造SSR网站应用,0到1实现服务端渲染MKW
- nlp计数法应用于PTB数据集示例详解
- 即学即会|即学即会 Serverless | 如何解决 Serverless 应用开发部署的难题()
- Leetcode2两数相加(链表应用)