Core WebAPI 中 Program.cs和Startup.cs认识 (高频考点)
1.Program.cs认识
public class Program
{
public static void Main(string[] args)
{ //Build方法构建出一个web应用程序,然后去运行
CreateWebHostBuilder(args) //调用下面的方法,返回一个IWebHostBuilder对象
.Build()//用上面返回的IWebHostBuilder对象创建一个IWebHost
.Run();//运行上面创建的IWebHost对象从而运行我们的Web应用程序。换句话说就是启动一个一直运行监听http请求的任务
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args) //使用默认的配置信息来初始化一个新的IWebHostBuilder实例
.UseStartup<Startup>(); // 为WebHost指定了Startup类
}
2.Startup.cs认识
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration; //用来读取配置文件信息的对象
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
//后续要注入自己的服务通过在这个方法里面注入
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);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
//后续要注入自己的中间件通过在这个方法里面注入
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?}");
});
}
}
ConfigureServices方法是用来把services(各种服务, 例如identity, ef, mvc等等包括第三方的, 或者自己写的)加入(register)到container(asp.net core的容器)中去, 并配置这些services。
这个container是用来进行dependency injection的(依赖注入)。所有注入的services(此外还包括一些框架已经注册好的services) 。
就是方便在后面写代码(需要)的时候,将它们注入(inject)进去,也即在需要的地方能直接使用(会进入ConfigureServices获取相应的对象)。
例如上面的Configure方法的参数:app, env, loggerFactory都是注入进去的services。
Configure方法是asp.net core程序用来具体指定如何处理每个http请求的, 例如我们可以让这个程序知道我使用mvc来处理http请求, 那就调用app.UseMvc()这个方法就行。
应用程序启动的流程图:
本文来自博客园,作者:兴想事成,转载请注明原文链接:https://www.cnblogs.com/mjxxsc/p/18292299