Program类

public class Program
{
/// <summary>
/// 应用程序入口
/// 1.asp.netcore 本质上是控制台程序
/// </summary>
/// <param name="args"></param>
public static void Main(string[] args)
{
//执行完build之后,就从控制台程序变成了asp.netcore
CreateHostBuilder(args).Build().Run();
} public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}

Startup 类

public class Startup
{
private readonly IConfiguration _configuration;
/// <summary>
/// 通过构造函数注入
/// </summary>
/// <param name="configuration"></param>
public Startup(IConfiguration configuration)
{
_configuration = configuration;
var aa = _configuration["FyyAspnetcore:Name"];// 获取 appsettings.json文件的数据
} // This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
//运行时同通过约定来调用 这个类 的两个方法。先调用 ConfigureServices、再调用 Configure.
/// <summary>
/// 负责依赖注入配置
/// </summary>
/// <param name="services"></param>
public void ConfigureServices(IServiceCollection services)
{
/*DI的优点:
* 1.解耦,没有强依赖,Controller与具体的服务类解耦,
* 2.利于单元测试
* 3.不需要了解具体的服务类:Controller 不需要了解服务类及其工作细节。
* 4.也不需要管理服务类的生命周期:Controller 不需要管理服务类的生命周期,生命周期交给IOC容器DI来控制。
*/ //2.当IClock 被请求时,IOC容器会返回一个CnClock的实例。
services.AddSingleton<IClock, CnClock>();//AddSingleton 表示所注册的服务周期 是整个应用程序生存期间,整个应用程序只有一个实例,只有应用程序停止,才会被销毁。
//services.AddScoped<IClock, USClock>;//所注册的服务的生命周期是整个请求期间。一次web请求产生一个实例,web请求处理完的时候,生命周期就结束了。
//services.AddTransient<IClock, USClock>;//所注册的服务的生命周期是暂时的,服务每次没请求的时候,都会实例化一个对象。 //services.AddControllers();//注册webapi的服务 //services.AddControllersWithViews();//注册mvc的服务 //将配置文件的Json,映射到类中。(配置到类中,配置依赖注入)
services.Configure<FyyAspnetcore>(_configuration.GetSection("FyyAspnetcore"));
} /// <summary>
/// Development环境变量时,走这个方法。可以针对不同的环境,使用不同的方法。
/// </summary>
/// <param name="app"></param>
/// <param name="env"></param>
//public void ConfigureDevelopment(IApplicationBuilder app, IWebHostEnvironment env)
//{ //} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
/// <summary>
/// 负责中间件,配置了asp.netcore http请求的管道。http请求从管道进来,处理完之后再从管道回去。如果管道什么都没有,请求进来,再回去,就什么都不会发生。
/// 放在管道中能处理请求的东西,就是中间件(middleware)。
/// </summary>
/// <param name="app">是一个服务,通过依赖注入的方式注入进来,注入的是服务的接口</param>
/// <param name="env">依赖注入</param>
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//判断环境变量
//env.IsEnvironment("OK"); 判断自定义环境变量
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();//开发模式下插入到管道的第一个中间件。
} // app.UseAuthentication();//使用授权中间件 app.UseHttpsRedirection();//https 重定向中间件,强制客户端使用ssl协议。 //如果需要使用html、js、css 等静态文件,就需要使用 UseStaticFiles 中间件,如mvc。
//如果不使用这个中间件,客户端就访问不了这些静态文件。
app.UseStaticFiles(); app.UseRouting();//路由中间件。会检查在应用中已经注册的端点。 app.UseEndpoints(endpoints => //注册端点,端点就是进来的http请求的url的结尾那部分。这部分由端点中间件处理。
{
endpoints.MapGet("/", async context =>// 以/结尾的url,映射到下面的表达式中。
{
await context.Response.WriteAsync("Hello World!");
}); //MVC的路由端点,路由模板,路由表的形式
//endpoints.MapControllerRoute(
// name:"default",
// pattern:"{controller=Home}/{action=Index}/{id?}"
// ); //使用这种方式,可以在controller或action上添加路由,不需要添加路由表。
// endpoints.MapControllers();
});
}
}

appsettings.json

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"FyyAspnetcore": {
"Name": "Fengyinyong",
"Age":
}
}

asp.netcore 3.1 program、Startup 类详解的更多相关文章

  1. [转帖]ASP.NET Core 中间件(Middleware)详解

    ASP.NET Core 中间件(Middleware)详解   本文为官方文档译文,官方文档现已非机器翻译 https://docs.microsoft.com/zh-cn/aspnet/core/ ...

  2. Asp.Net MVC学习总结之过滤器详解(转载)

    来源:http://www.php.cn/csharp-article-359736.html   一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的 ...

  3. java之StringBuffer类详解

    StringBuffer 线程安全的可变字符序列. StringBuffer源码分析(JDK1.6): public final class StringBuffer extends Abstract ...

  4. ASP.NET连接Oracle数据库的步骤详解(转)

    ASP.NET连接Oracle数据库的步骤详解   本文我们主要介绍了ASP.NET连接Oracle数据库的步骤及每个步骤需要进行的设置,希望能够对您有所帮助.   在用ASP.NET开发应用程序时, ...

  5. java之AbstractStringBuilder类详解

    目录 AbstractStringBuilder类 字段 构造器 方法   public abstract String toString() 扩充容量 void  expandCapacity(in ...

  6. java之StringBuilder类详解

    StringBuilder 非线程安全的可变字符序列 .该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍).如果可能,建议优先采用该类,因为在 ...

  7. Java String类详解

    Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...

  8. QAction类详解:

    先贴一段描述:Qt文档原文: Detailed Description The QAction class provides an abstract user interface action tha ...

  9. JAVAEE学习——struts2_01:简介、搭建、架构、配置、action类详解和练习:客户列表

    一.struts2是什么 1.概念 2.struts2使用优势以及历史 二.搭建struts2框架 1.导包 (解压缩)struts2-blank.war就会看到 2.书写Action类 public ...

随机推荐

  1. webpack源码-打包资源输出到本地

    webpack收集完依赖是怎么打包资源的呢? 入口compiler.js: this.applyPluginsParallel("make", compilation, err = ...

  2. jupyter中%matplotlib inline报错

    学习matplotlib时,使用的jupyter跑代码.报错如上图.大致就是后面的注释不能被识别.我寻思着注释不用识别吧,大概是因为%后跟的语句被全部当成命令行执行了,然后命令行不识别行内注释,导致报 ...

  3. 题解 CF1372C

    题目 传送门 题意 给你一个 \(1\) 到 \(n\) 的排列. 定义特殊交换为:选择一段区间\([l,r]\) ,使得此段区间上的数交换后都不在原来的位置. 问最少多少次可以将此排列变成升序的. ...

  4. Spring事务管理接口定义

    Spring事务管理接口介绍 Spring事务管理接口: PlatformTransactionManager: (平台)事务管理器 TransactionDefinition: 事务定义信息(事务隔 ...

  5. JVM系列之:对象的锁状态和同步

    目录 简介 java对象头 java中锁状态的变化 偏向锁biased locking 轻量级锁thin lock 重量级锁 三种锁状态的不同 简介 锁和同步是java多线程编程中非常常见的使用场景. ...

  6. windows系统远程修改密码

    1.需求:公司需要短时间.批量修改一些windows系统的管理员密码: 2.准备工作: a.下载软件:链接:https://pan.baidu.com/s/1kV52DqE1_4siPuxS5Mosc ...

  7. link小图标以及表格的用法基础

    一.网页小图标的实现 实例: 实现方式: 效果: 二.表格基础 1.表格的组合标签 常用: table tr td caption ①table属性 border  边框 width  宽度 默认按照 ...

  8. 一切皆组件的Flutter,安能辨我是雄雌

    从一开始接触Flutter,相信读者都会铭记一句话,那就是--一切皆组件.今天我们就来体会一下这句话的神奇魔力,我们先从实际的产品需求说起. 我们先来看一个简化的运行图: 我们要实现如上图所示的日期选 ...

  9. 笑谈AlphaGo对战人类从模仿到超越之奥义

    起源 故事从一个围棋说起,人类赖以自豪的智慧,为什么这么说,因为据统计,从这19乘19的方格中摆棋,可以有10的340次方的可能,用一个更形象的比拟,全宇宙的原子加起来,也比这个数要小. 也就是说,如 ...

  10. checkbox变成单选型

    checkbox的特性是可以选中或者取消,有时需要利用这一点做一个类似radio的选项框: <input type="checkbox" class="aa&quo ...