前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ASP.NET Core 的 WebApplication 类

ASP.NET Core 的 WebApplication 类

作者头像
郑子铭
发布于 2025-06-11 08:31:30
发布于 2025-06-11 08:31:30
8400
代码可运行
举报
运行总次数:0
代码可运行

ASP.NET Core 提供了 3 个主机类(Host)。这些类用于配置应用、管理生命周期和启动 Web 服务。

  • WebApplication:ASP.NET Core 6 引入的新 Host 类。它适合 Web 应用或 Web API
  • Host:适合非 Web 类型的应用。比如控制台应用或后台服务。
  • WebHost:ASP.NET Core 6 之前使用的 Host 类。现在不推荐使用。

本文重点介绍 WebApplication 类的功能和用法。

一、WebApplication 类的功能详解

1.1 创建应用程序:CreateBuilder 与 Create 方法

WebApplication 提供两个静态方法来创建应用实例。

CreateBuilder()

这个方法返回一个 WebApplicationBuilder 对象。它支持链式调用添加服务和中间件。最后通过 Build() 方法生成 WebApplication 实例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var builder = WebApplication.CreateBuilder(args);

// 添加控制器支持
builder.Services.AddControllers();

var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();
Create()

这个方法直接生成一个 WebApplication 实例。默认已经配置了一些中间件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();

⚠️ 注意:Create() 没有 CreateBuilder() 灵活。建议在简单场景中使用。

1.2 启动方式:Run、RunAsync 与 StartAsync

WebApplication 提供三种方式启动应用。每种适合不同场景。

方法

描述

Run()

阻塞当前线程,直到 Host 关闭。常用于主函数中启动服务。

RunAsync()

异步启动 Host,直到触发取消令牌或关闭信号。

StartAsync()

异步启动 Host,启动成功后立即返回。HTTP Server 开始接收请求。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
await app.RunAsync(); // 异步启动并等待退出

二、常用扩展方法分类

下面是 WebApplication 常用的扩展方法。按功能分组说明。

2.1 中间件相关

方法

说明

UseRequestLocalization()

根据客户端请求设置语言环境。

UseAuthentication()

启用身份验证。

UseAuthorization()

启用权限验证(要放在 UseRouting() 和 UseEndpoints() 之间)。

UseStaticFiles()

启用静态文件支持。

UseDeveloperExceptionPage()

在开发环境下显示异常页面。

UseHttpsRedirection()

把 HTTP 请求重定向到 HTTPS。

UseSession()

启用会话功能。

UseWebSockets()

启用 WebSocket 支持。

UseMiddleware<T>()

使用自定义中间件。

2.2 路由相关

方法

说明

UseRouting()

启用路由匹配机制。

UseEndpoints()

定义端点映射规则。

MapGet/Post/Put/Delete()

映射特定 HTTP 方法的请求。

MapControllers()

自动映射控制器中的路由。

MapFallbackToController()

当没有匹配时,回退到指定控制器。

2.3 文件与目录相关

方法

说明

UseDefaultFiles()

启用默认首页文件(如 index.html)。

UseDirectoryBrowser()

启用目录浏览功能。

UseFileServer()

启用静态文件和默认文件功能。

2.4 性能与优化

方法

说明

UseResponseCaching()

启用响应缓存。

UseResponseCompression()

启用响应压缩。

UseRateLimiter()

控制请求频率。

UseConcurrencyLimiter()

控制并发请求数量。

2.5 安全相关

方法

说明

UseHsts()

启用 HSTS(HTTPS 安全策略)。

UseCors()

启用跨域资源共享。

UseCookiePolicy()

启用 Cookie 使用策略。


三、关键属性说明

WebApplication 提供多个重要属性。可用于访问运行时信息和做高级控制。

属性

说明

Configuration

获取应用的配置(如 appsettings.json)。

Environment

获取当前运行环境(如 Development / Production)。

Lifetime

管理应用的生命周期事件。

LoggerFactory

获取日志工厂,用于记录日志。

Services

获取依赖注入容器。

Urls

获取或设置监听地址(如 http://localhost:5000)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.Urls.Clear();
//设置监听地址
app.Urls.Add("http://*:8080");

四、依赖注入与 Services 注册

通过 WebApplicationBuilder.Services 可注册服务。支持多种生命周期模式(Singleton、Scoped、Transient)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var builder = WebApplication.CreateBuilder(args);

// 添加内存缓存
builder.Services.AddMemoryCache();

// 添加 Scoped 生命周期的服务
builder.Services.AddScoped<ITodoRepository, TodoRepository>();

// 添加 Singleton 生命周期的服务
builder.Services.AddSingleton<ILoggerService, ConsoleLoggerService>();

var app = builder.Build();
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet NB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
NATURE|人类突变特征
癌症基因组的体细胞突变是由在受精卵和癌细胞之间的细胞谱系中起作用的外源性和内源性突变过程引起的。每一个突变过程都可能涉及DNA损伤或修饰、DNA修复和DNA复制(正常或不正常)的组成部分,并产生一种特征性的突变特征,可能包括碱基替换、小的插入和缺失(indels)、基因组重排和染色体拷贝数变化。
作图丫
2022/03/29
2.4K0
NATURE|人类突变特征
12分NC教你构建缺氧评分和扩展分析
今天跟大家分享的是2020年发表在NATURE COMMUNICATIONS (IF:12.121)杂志上的一篇文章"Divergent mutational processes distinguish hypoxic and normoxic tumours".在文章中作者采用缺氧评分,构建了肿瘤缺氧的泛癌景观,并分析了缺氧与癌基因的相关性,以及分析了缺氧相关的突变和亚克隆特征。
生信菜鸟团
2020/09/22
1.7K0
12分NC教你构建缺氧评分和扩展分析
一口气发布6篇Nature、15篇子刊,史上最大规模揭秘癌症复杂性:涵盖38种肿瘤的2658个癌症基因组
Nature的这6项研究来自全基因组泛癌分析(Pan-Cancer Analysis of Whole Genomes, PCAWG)联盟,这是他们迄今为止最为全面的癌症基因组荟萃分析:
量子位
2020/03/04
7100
一口气发布6篇Nature、15篇子刊,史上最大规模揭秘癌症复杂性:涵盖38种肿瘤的2658个癌症基因组
基因组 | Nat.Genet | InDel 新分类系统
◉ a,TP53缺失的hTERT永生化视网膜色素上皮细胞(hTERT-RPE1TP53缺失,以下简称背景对照)中的突变积累实验。◉ b,CRISPR基因编辑的InDel负担和平均InDel倍数增加(每种基因型有2-5个亚克隆;补充表1-3)。◉ 红色虚线表示对照亚克隆的InDel负担均值。y轴以对数尺度显示InDel负担。◉ c,区分编辑亚克隆与背景对照的COSMIC-83 InDel特征。浅蓝色误差条表示未编辑对照的n=100次自举InDel特征与背景特征之间的余弦相似度的均值±3个标准差(扩展数据图1d),汇总自n=7个未编辑亚克隆。◉ x轴以对数尺度显示InDel数量。◉ d,减去背景后的基因编辑相关的COSMIC-83 InDel突变特征(补充表4)。◉ e,COSMIC ID1、ID2和ID7的关键特征(v.3.3)。◉ f,基因编辑ID与COSMIC ID之间的余弦相似度热图(v.3.3)。已知和提出的病因标注在热图上方(蓝色)。◉ g,将d中基因编辑InDel特征分解为COSMIC ID(v.3.3)的解决方案。
生信菜鸟团
2025/05/23
800
基因组 | Nat.Genet | InDel 新分类系统
Nature Communications|同源重组缺陷的泛癌landscape
同源重组(HR)通路对于高保真DNA双链断裂(DSB)修复是必不可少的,涉及许多基因,包括BRCA1和BRCA2。由于这些基因失活造成的HR缺陷(HRD)导致基因组改变水平的增加。HRD是许多肿瘤的共同特征,经常见于乳腺癌和卵巢癌。HRD的准确检测具有临床意义。
作图丫
2022/03/29
5900
Nature Communications|同源重组缺陷的泛癌landscape
中国人肝癌全基因组项目
先前的中国人肝癌研究队列规模有限,且集中在WES,对于 WGS 上研究较少。PCAWG 大规模的全基因组研究因为测序深度较浅而无法完全分析肝癌基因组的亚克隆结构。因此作者开展了 Chinese Liver Cancer Atlas(CLCA)中国人肝癌图谱项目。
生信菜鸟团
2024/03/18
2550
中国人肝癌全基因组项目
几项泛癌基于突变的网络模块分析汇总
今天为大家介绍2013年Nature Methods、SCIENTIFIC REPORTS、nature structural & molecular biology、Nature Genetics发布的几项关于泛癌网络模块分析的研究。
作图丫
2022/03/29
3530
几项泛癌基于突变的网络模块分析汇总
病理学+泛癌组合可发nature新刊!
癌症的诊断通常基于组织切片的组织病理学评估,并辅以遗传和其他分子检测。现代计算机视觉算法具有很高的诊断准确性和增强组织病理学工作流程的潜力。
作图丫
2022/12/04
4840
病理学+泛癌组合可发nature新刊!
TME文献精读 | 基于机器学习的体细胞突变检测方法
体细胞突变检测准确性可能会影响癌症患者的突变发现和治疗管理。为了解决这个问题,作者在机器学习的基础上开发了一种体细胞突变发现方法,该方法在识别经过验证的肿瘤改变方面优于现有方法(敏感性97% vs 90%~99%;阳性预测值98% vs 34%~92%)。使用此方法对来自1368 TCGA样本的成对肿瘤正常外显子组数据进行分析,该算法与TCGA MC3突变集的一致性为74%,并且还发现TCGA MC3集中可能存在假阳性和假阴性突变,包括在临床上可靶向的基因。对于先前用免疫检查点抑制剂治疗过的黑色素瘤和肺癌患者,该机器学习算法的高质量体细胞突变评估可改善基于肿瘤突变负荷的临床结果预测。与其他临床测序分析相比,将机器学习突变检测应用于临床二代测序(NGS)分析中可以提高检测结果的准确性。以上分析基于机器学习的分析可改进对肿瘤特异性突变的鉴定,并对癌症患者的研究和临床管理具有重要意义。
王诗翔呀
2020/07/06
1.3K0
TME文献精读 | 基于机器学习的体细胞突变检测方法
27分Nature子刊的生信分析是怎的高度?
今天给大家带来的是2020年3月发表在Nat Genet(IF=27.603)杂志上的文章“Pan-cancer analysis of whole genomes identifies driver rearrangements promoted by LINE-1 retrotransposition”。文章中作者通过泛癌数据分析了LINE-1 逆转座促进各种类型的重排。
生信菜鸟团
2020/11/03
1.2K0
几项泛癌driver突变分析汇总
今天为大家介绍2013年Nature Genetics、Nature、SCIENTIFIC REPORTS、Nature Methods和Nature Genetics发布的几项关于泛癌driver突变分析的研究。
作图丫
2022/03/29
1.3K0
几项泛癌driver突变分析汇总
这篇最近发在Nature上的肿瘤进化有什么不一样?
今天跟大家分享的是2020年2月发表在Nature(IF=43.07)杂志上的一篇文章。文章中作者讨论了2,658种癌症的进化史,说明了早期癌症检测的可能性。
生信菜鸟团
2020/07/29
2.6K0
这篇最近发在Nature上的肿瘤进化有什么不一样?
提供代码数据,向Nature学习如何用基因组数据来分析癌症的演化轨迹
某些基因的突变会驱动细胞不受控制地增殖并导致癌症。慢性髓性白血病(CML)中的费城染色体首次揭示了这种基因与癌症的关联<sup>1,2</sup>。然而,关于CML的发病轨迹、BCR-ABL1融合基因克隆扩增的速率及其如何影响疾病的认知仍然有限。通过对9名年龄在22至81岁之间的CML患者的1013个造血集落进行全基因组测序,我们重建了造血过程的系统发育树。研究发现,BCR和ABL1基因的内含子断裂并非总是出现,同时也观察到BCR基因中存在框外外显子断裂点,这需要通过外显子跳跃来形成BCR-ABL1融合基因。除了ASXL1和RUNX1突变外,其他额外的髓系基因突变主要存在于野生型细胞中。我们推断,由BCR-ABL1引起的爆发性增长在诊断前3-14年(置信区间为2-16年)即已开始,年增长率超过70,000%。在端粒长度较短的BCR-ABL1细胞中,突变积累更高,这反映了其过度的细胞分裂。克隆扩增速率与诊断时间呈负相关。普通人群中BCR-ABL1的检出情况与CML的发病率相符,而晚期和/或急变期CML的特征在于后续的基因组进化。这些数据突显了BCR-ABL1融合基因的强大致癌潜能,并与大多数癌症缓慢且连续的克隆演化轨迹形成了对比。
生信菜鸟团
2025/05/09
1100
提供代码数据,向Nature学习如何用基因组数据来分析癌症的演化轨迹
几项泛癌的关于突变与环境暴露和病原体分析汇总
今天为大家介绍2013年Nature 、Nature Genetics和Nature Communications发布的几项突变与环境暴露和病原体关系的研究。
作图丫
2022/03/29
4200
几项泛癌的关于突变与环境暴露和病原体分析汇总
Nat. Med. | 基于遗传学原发部位未知癌症的分类和治疗反应预测
今天为大家介绍的是来自Alexander Gusev团队的一篇论文。原发部位未知癌症(Cancer of unknown primary,CUP)是一种无法追溯到其原发部位的癌症,占所有癌症的3-5%。CUP缺乏已建立的靶向治疗方法,导致普遍预后不佳。作者开发了OncoNPC,这是一个基于机器学习的分类器,使用来自三个机构的22种癌症类型中的36,445个肿瘤的定向次世代测序(NGS)数据进行训练。肿瘤NGS基础的原发癌类型分类器(OncoNPC)在保留的肿瘤样本上取得了加权F1分数为0.942的高置信度预测(≥ 0.9)。
DrugAI
2023/11/06
2320
Nat. Med. | 基于遗传学原发部位未知癌症的分类和治疗反应预测
Nature | 10万基因组项目的14,778名患者的39种肿瘤类型ecDNA的研究
生信菜鸟团
2024/11/23
2190
Nature | 10万基因组项目的14,778名患者的39种肿瘤类型ecDNA的研究
研究癌细胞系的突变特征揭示APOBEC突变的周期性
细胞中的每一个变异过程都会在其基因组上留下印记。利用数学方法从人类癌症成千上万的体细胞突变中已确定超过40个碱基替换和10个基因组重排突变特征。目前研究人员对某些特征的突变过程有了深入的了解,突变过程与许多疾病潜在的生物学机制有关。
作图丫
2022/03/29
1.5K0
研究癌细胞系的突变特征揭示APOBEC突变的周期性
现在发在NG上的癌症全面基因组分析跟几年前的有什么不同?
生信菜鸟团
2025/02/18
1260
现在发在NG上的癌症全面基因组分析跟几年前的有什么不同?
Nature 子刊:IncRNA在肿瘤发生中的深度分析
今天跟大家分享的是2020年3月发表在Communications Biology(IF=4.165)杂志上的一篇文章Cancer LncRNA Census reveals evidence for deep functional conservation of long noncoding RNAs in tumorigenesis。文章中作者通过癌症LncRNA普查揭示证据,证明长非编码RNA在肿瘤发生中的深层功能保守性。
生信菜鸟团
2020/09/04
1.6K1
提供数据代码,想学基因组分析,看看这篇刚发在 Nature 的胃突变图谱分析就够了
◉ 这项研究的概述。从30名捐赠者身上采集了胃腺。◉ 对来自正常、发炎和/或化生胃组织的217个微解剖单个腺体以及21个胃癌腺体进行了全基因组测序,另外对829个微解剖(每个包含几个相邻的腺体)进行了深度靶向基因测序(seq.)。◉ 三个捐赠者的胃腺微解剖体中体细胞突变的VAF分布,按中位VAF着色。◉ 所有全基因组测序单个胃腺微解剖体(n=217)的中位VAF直方图。◉ 非癌症捐赠者胃腺的SNVs和indels数量与捐赠者年龄的关系图(n=79)。红色虚线表示基于混合效应模型的最大似然估计年龄和SNV突变负荷关系,灰色阴影区域表示95%置信区间。◉ d图中的P值是通过双侧方差分析测试获得的。◉ a图中的胃轮廓改编自Servier Medical Art(https://smart.servier.com/),采用国际CC BY 4.0许可。◉ a图中的激光捕获显微切割轮廓改编自参考文献8,Springer Nature Limited。◉ M代表男性;F代表女性。
生信菜鸟团
2025/04/11
1110
提供数据代码,想学基因组分析,看看这篇刚发在 Nature 的胃突变图谱分析就够了
推荐阅读
相关推荐
NATURE|人类突变特征
更多 >
LV.1
中山大学肿瘤防治中心博士后
目录
  • 一、WebApplication 类的功能详解
    • 1.1 创建应用程序:CreateBuilder 与 Create 方法
      • CreateBuilder()
      • Create()
    • 1.2 启动方式:Run、RunAsync 与 StartAsync
  • 二、常用扩展方法分类
    • 2.1 中间件相关
    • 2.2 路由相关
    • 2.3 文件与目录相关
    • 2.4 性能与优化
    • 2.5 安全相关
  • 三、关键属性说明
  • 四、依赖注入与 Services 注册
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档