文章详情 后端开发

ASP.NET Core 学习(1)

发布时间:2026-04-28 15:37 浏览次数:2 最后更新:2026-04-29 10:46

ASP.NET Core、c#、.Net 10

正文内容

一、简介

1、初始化ASP.Net Core应用程序

  1. 创建WebApplicationBuilder对象实例
  2. 向Services集合添加所需要的服务类型
  3. 配置相关的选项类型
  4. 调用Build方法创建WebApplication实例
  5. 启动应用程序,同时启动内置的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实例的RunStartAsync()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,否则返回false
  • IsProduction()方法:同上,判断当前环境是否为Production
  • IsStaging()方法:同上,判断当前环境是否为Staging
  • IsEnvironment(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 条已展示评论
发表评论

发表评论

提交后将进入人工审核,审核通过后才会展示。

邮箱仅用于必要的联系与基础风控,不会在页面中公开展示。

请文明发言,避免发布广告、链接或敏感内容;短时间内频繁提交会被限制。

隐私提示:提交评论即表示你同意站点为评论展示、审核、防刷与安全风控目的处理你填写的昵称、邮箱和评论内容。

其中邮箱不会公开展示,也不会用于与评论无关的公开用途。

已展示评论

读者留言

以下仅展示已通过审核的评论内容。

0 条评论
当前还没有通过审核的评论,后续可在后台审核后展示。