ASP.NET Core 学习(1)
ASP.NET Core、c#、.Net 10
正文内容
一、简介
1、初始化ASP.Net Core应用程序
- 创建WebApplicationBuilder对象实例
- 向Services集合添加所需要的服务类型
- 配置相关的选项类型
- 调用Build方法创建WebApplication实例
- 启动应用程序,同时启动内置的Kestrel服务器
2、WebApplicationBuilder类
WebApplicationBuilder类无构造函数,不可直接实例化。只能通过WebApplication类的CreateBulider()方法创建:
var builder = WebApplication.CreateBuilder();
如果应用程序需要通过命令行参数获取配置参数,则应继续将传递给程序入口的的参数继续传给CreateBulider()方法:
var builder = WebApplication.CreateBuilder(args);
应用程序配置完毕后就可以调用Build()方法来创建WebApplication实例:
var app = builder.Build();
注意:调用Build()方法后,依赖注入容器将变为只读状态,无法修改。
获取到WebApplication实例后,可以适当的安排HTTP管线,以便于可以处理来自客户端的请求。
3、启动应用程序
调用WebApplication实例的Run、StartAsync()、RunAsync()等方法就可以启动应用程序。
4、设置应用程序的URL
Web服务需要绑定一个或多个URL,并在这些URL上设置侦听。客户端通过URL找到要访问的Web程序,为应用程序设置URL的方法大致分为两类:
- 硬编码:如调用
Builder.WebHost.UseUrls(url)方法app.Urls.Add(url)方法app.RUN(url)方法- 通过
ServerAddressFeature对象
- 应用程序配置
- 使用命令行参数:
var builder = WebApplication.CreateBuilder(args); - 使用配置文件:appsettings.json、appsettings.Development.json等等
- 使用环境变量:变量名称使用
ASPNETCORE_URLS - 使用launchSettings.json:项目模板会默认在Properties文件夹中创建此文件
- 使用Kestrel服务器的侦听地址:基于Socket层面,只能使用IP+端口号
- 通过HTTP.sys:效果与Kestrel一样,但是只能运行于Win平台
- 使用命令行参数:
5、应用程序生命周期事件
ASP.Net core 应用程序在初始化过程中会向服务容器中注册IHostApplicationLifetime接口类型的服务,该接口描述了几个与应用程序生命周期相关的事件。
- ApplicationStarted:只有在应用程序完全启动之后才会触发
- ApplicationStopping:应用程序正在停止运行,但尚未完成时
- ApplicationStopped:当应用程序正常停止时触发(此过程无错误发生)
二、运行环境
1、定义运行环境
应用程序允许配置多个运行环境,并可以针对某个环境来执行特定的代码。原则上,开发人员可以定义任意有效的字符串来命名运行环境。需要注意的是ASP.NET Core预定义了3个运行环境,通过Environments类的静态字段公开:
- Development:表示当前处于开发阶段
- Staging:表示当前应用程序开发已经完成,处于预发布阶段
- Production:表示应用程序已经完成了开发与测试,要投入生成环境中使用
可以通过命令行参数和开发环境变量来为应用程序指定运行环境。
使用命令行参数
--environment或/environment
使用环境变量
ASPNETCORE_ENVIRONMENT
2、IsEnvironmentName扩展方法
IsDevelopment()方法:如果当前环境为Development,则返回true,否则返回falseIsProduction()方法:同上,判断当前环境是否为ProductionIsStaging()方法:同上,判断当前环境是否为StagingIsEnvironment(EnvironmentName)方法:若当前所运行的环境名称在以上三项以外,就需调用该方法判断
3、多运行环境下的配置文件
默认的Web应用程序除了加载appsettings.json文件外,还会查找以appsettings.{EnvironmentName}.json格式命名的文件,这些文件都是专用于特定运行环境的。例如:
- appsettings.json:适用于所有运行环境的配置文件
- appsettings.Demo.json:适用于名为Demo的运行环境的配置文件
- appsettings.Development.json:适用于名为Development的运行环境的配置文件
app.Configuration属性中储存了应用程序从各个配置源加载的配置信息,其数据类型实现了IConfiguration接口,程序代码可通过索引器访问特定配置项
string cfgValue = app.Configuration["KeyValue"]
4、用于环境筛选的Razor标记
用来在页面中针对于不同的运行环境显示不同的页面信息。
- Include:指定一个环境列表,只要当前应用程序所使用的环境在此列表中,就会呈现对应的HTML内容
- Exclude:含义为“排除”,即指定一个列表,当应用程序所使用的环境在此列表中,就不会呈现相应的HTML内容
- Name:处理方式与Include相同
示例如下:
<environment includ="Development,Test">
<div>你好,世界</div>
</environment>
5、运行环境与依赖注入
包含应用程序运行环境信息的相关类型在程序初始化过程中会被注册到服务容器中。
对于使用了通用主机启动的.NET应用程序,可以通过IHostEnvironment接口得知当前运行环境,对于ASP.NET Core应用程序还可以通过IWebHostEnvironment接口获取运行环境信息。
正文内容已启用复制保护,代码块仍支持复制。
评论区
0 条已展示评论发表评论
提交后将进入人工审核,审核通过后才会展示。
读者留言
以下仅展示已通过审核的评论内容。