ASP.NET Core系列(三):启动类Startup

从ASP.NET MVC迁移到ASP.NET Core的分步指南 分步指南 这是有关将项目从ASP.NET MVC框架迁移到ASP.NET Core的实用指南。 由nopCommerce开源项目团队编写的分步说明可以轻松地应用于任何ASP.NET MVC项目。 它还描述了为什么您可能需要升级,以及为什么尚未跟上进度的项目应该考虑它。 为什么要移植到ASP.NET Core? 在继续进行从ASP.NET MVC移植到ASP.NET Core的步骤(以no... 阅读详情

前面讲了ASP.NET Core 的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zhangweizhong/category/1477144.html

ASP.NET Core 里面一个比较重要的就是Startup.cs 类,包括加载配置, 通过依赖注入加载组件, 注册路由等都在此处进行。今天就来聊一聊Startup 类的作用和用法。

 

与 ASP.NET 对比,ASP.NET Core 最显著的变化之一就是配置应用程序的方式,Global.asax、FilterConfig.cs 和 RouteConfig.cs 统统消失了,取而代之的是 Program.cs 和 Startup.cs。Program.cs 作为 Web 应用程序的默认入口,会自动调用Startup.cs 中的 ConfigureServices 方法 和 Configure 方法。大致流程如下图所示:
 

Startup 类

Startup 类是配置服务和应用的请求管道。

Startup 类的作用:

  1. ConfigureServices方法用于定义(注册)应用程序所使用的服务。(如:ASP.NET Core MVC,Entity Framework Core,Identity 等);

  2. Configure方法用于定义请求管道的中间件,该管道将用于处理应用程序的所有请求。

  3. 注册服务添加方法是无序的,ASP.NET Core在应用程序启动的时候,只要有相应服务即可,而注册中间件时方法是有序的,管道内的每一个组件都可以选择是否将请求交给下一个组件,并在管道中调用下一个组件之前或之后执行某些操作。

 

在应用启动时,ASP.NET Core 运行时会调用 ConfigureServices 和 Configure:

public class Startup
{
  // 运行时调用此方法。使用此方法向容器添加服务。
  public void ConfigureServices(IServiceCollection services)
  {
    //使用此方法向容器添加服务。
  }
  // 运行时调用此方法。使用此方法配置HTTP请求管道。
  public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  {
    //使用此方法配置HTTP请求管道中间件。
  }
} 

 

Startup 类的构造函数提供注册config,log,env 等服务:

public class Startup
{
    private readonly IHostingEnvironment _env;
    private readonly IConfiguration _config;
    private readonly ILoggerFactory _loggerFactory;
   //构造函数,加载配置文件,注册log等
    public Startup(IHostingEnvironment env, IConfiguration config, 
        ILoggerFactory loggerFactory)
    {
        _env = env;
        _config = config;
        _loggerFactory = loggerFactory;
    }
   ...

}

ConfigureServices 方法

方法是可选的; 但是如果使用的话,它会在WebHost的Configure方法之前被调用。 WebHost可能会在调用启动方法之前配置一些服务。 按照惯例,在这个方法中设置配置选项。

对于需要大量设置的功能,在IServiceCollection上添加Add[Service]扩展方法。 下面示例将应用程序配置为使用Entity Framework,Identity和MVC的服务:

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

    services.AddIdentity<ApplicationUser, IdentityRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders();

    services.AddMvc();

    // Add application services.
    services.AddTransient<IEmailSender, AuthMessageSender>();
    services.AddTransient<ISmsSender, AuthMessageSender>();
}

ConfigureServices 将服务添加到服务容器,使其在应用和 Configure 方法中可用。

 

Configure 方法

Configure方法用于指定ASP.NET应用程序如何响应HTTP请求。 通过将中间件组件添加到由依赖注入提供的IApplicationBuilder实例来配置请求管道。

从下面的例子中,我们使用了几个扩展方法来配置支持:异常页和异常处理程序, 静态文件,  MVC, 和 Identity的管道。

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();

    app.UseMvc();
}

每个 Use 扩展方法将一个或多个中间件组件添加到请求管道。 例如,UseMvc 扩展方法将路由中间件添加到请求管道,并将 MVC 配置为默认处理程序。

其他服务(如 IHostingEnvironment 和 ILoggerFactory),也可以在 Configure 方法中指定。

 

 最后

1. 以上就将Startup 类简单的介绍完了,还有很多高级功能和用法,可以继续研究研究。
2. 参考文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/startup?view=aspnetcore-2.2


关于asp.net core里面实现AOP的方法 好像很人有提及这个,刚好今天看到 比起mvc5 asp.net core的AOP实现真是超级简单。 1.首先创建一个类继承自ActionFilterAttribute ,这个特性里有6个方法可以被重写,一下是标记 public class DoSomething:ActionFilterAttribute { private readonly ILogger _logger... 阅读详情

相关推荐

Crawl4AI实战:5分钟搞定电商价格监控爬虫(附Python代码)

本文详细介绍了如何利用开源AI网络爬虫框架Crawl4AI快速构建电商价格监控系统。通过Python实战代码,展示了从环境配置、智能内容提取到多平台适配、定时任务与数据可视化的完整流程,帮助运营人员和技术开发者高效实现自动化价格追踪与竞品分析。

weixin_29090917的博客 413

给我一份 Program.cs 文件 和 Startup.cs 文件的 详细代码

Program.cs 文件一般是包含了应用程序的主入口点的文件,典型的代码如下: using System; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; namespace MyApp { public class Program { public static v...

weixin_35750953的博客 465

o型圈沟槽设计_O型密封圈——详细选型过程及步骤

一、密封圈常用材料二、密封圈常用密封形式密封圈分为活塞密封,活塞杆密封,端面密封,旋转密封。三、O型密封圈的选型规则O型密封圈的尺寸图径向安装O型圈选型(静态和动态运动)活塞杆密封选择适当规格的O形圈时,应该保证其外径(d1+2*d2)至少等于或者大于沟槽外径d6;当选择的O形圈直径d1大于250 mm时, O形圈外径将不能超过沟槽外径的3%;当选择的O形圈直径d1小于250mm时, O形圈外径将...

weixin_39856630的博客 2万+

AspNet Core Web 应用程序的启动(有关 Program.cs类/ Startup.cs类 ) 当项目中干掉 Startup.cs 类如何设置启动 配置等等...

有关怎么创建Core MVC/API 这里就不说了,前段时间的博客有说过: 1. 项目生成后会有如图所示两个类 Program类Startup类 2.Startup类 初始内容 public void ConfigureServices(IServiceCollection services) { //运行时调用此方法。使用此方法向容器添加服务。 } ...

weixin_30746117的博客 589

从机械臂示教到厨房做饭:ACT模仿学习如何让机器人更“人性化”?

本文探讨了ACT(Action Chunking with Transformers)模仿学习技术如何让机器人更“人性化”,特别是在厨房等复杂场景中的应用。通过动作分块(Action Chunking)和时态融合(Temporal Ensemble)技术,机器人能够像人类一样记忆和执行复杂任务,如烹饪。文章还分析了ACT在家庭场景中的落地挑战及其在康复医疗、柔性制造等领域的跨领域应用潜力。

weixin_30613343的博客 255

基于ESP32-S3与模块化设计的立创桌面充电站:从硬件架构到Web控制实战

本文详细介绍了基于ESP32-S3与模块化设计的立创桌面充电站项目,涵盖从硬件架构到Web控制的全流程实战。项目采用模块化设计,支持自由组合快充模块,并通过ESP32-S3实现智能监控,用户可通过本地网页实时查看各接口电压、电流与功率数据。文章重点解析了基板、连接板与充电模块三大核心部件的设计,特别是大电流PCB的“开窗贴铜”处理技巧,并提供了固件刷写与Web控制面板的配置指南。

weixin_36122351的博客 292

深入理解ASP.NET Core中的Program类和Startup类

对于需要大量设置的功能,IServiceCollection 上有 Add{Service} 扩展方法,将服务添加到服务容器,使其在应用程序和Configure方法中可用。Program.cs 作为 Web 应用程序的默认入口,不做任何修改的情况下,会调用同目录下 Startup.cs 中的 ConfigureServices 方法 和 Configure 方法。: 在应用程序启动时,配置依赖注入容器,将各个服务注册到容器中,以便在整个应用程序中使用。如果环境不满足要求,可以在启动时提前发现并报错。

weixin_57062986的博客 3170

基于单片机电能质量检测仪设计

*单片机设计介绍,基于单片机电能质量检测仪设计。

2201_75940997的博客 1205

.Net Core开发学习(一) ——Startup 类

.Net Core开发学习(一) ——Startup 类 启动配置 Startup类位于:项目名称 > Startup.cs 程序启动默认配置为Startup类 位于:项目名称 > Program.cs public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run();

自云—自在之心,无缚于体 3095

第三章-python基础语法

有C语言基础应该这样学 Python。

qq_46187594的博客 1175

Claude Code 完整详解(Anthropic 官方 AI 编程 Agent)

它是运行在终端(Terminal)的 AI 编程代理,不是普通 IDE 插件;你用自然语言发指令,它自主规划步骤、读写项目文件、执行系统命令、排查 Bug、处理 Git 工作流,是能真正动手干活的 AI 程序员。真正的AI 开发代理人,不止写代码,还能执行开发全流程超长全局上下文,大型项目理解碾压传统补全工具终端原生 + IDE 双接入,开发流程无割裂代码质量、可读性、工程规范性普遍偏高权限安全机制完善,修改前预览、可随时中断回滚。

wange6906的博客 3155

ASP.NET Core 6.0 如何处理丢失的 Startup.cs 文件

NET 6.0 已经发布,ASP.NET Core 6.0 也已发布。其中有不少变化让很多人感到困惑。例如,“谁动了我的奶酪”,它在哪里Startup.cs?在这篇文章中,我将深入研究这个问题,看看它移动到了哪里以及其他变化。ASP.NET Core 的中间件并没有发生根本性的变化,但部分项目结构以及注册依赖项的位置发生了变化。为了更好地理解它,最好从 .NET Core 3.1 项目模板开始,然后手动升级它,看看它与新模板相比如何。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 11万+

Python学习第32天:Web前端入门

本文介绍了Web前端开发三大核心技术:HTML、CSS和JavaScript。首先概述了HTML的发展历程和HTML5新特性,详细讲解了常用HTML标签如文本、列表、链接、图像、表格、表单等。其次介绍了CSS的基础语法、选择器、颜色字体设置、盒子模型和布局定位方法。最后简要提及JavaScript为网页添加交互功能的作用。文章为Python开发者提供了前端技术的基础知识,帮助理解网页的结构、样式和行为实现原理。

tigerhhzz的博客 1910

ASP.NET Core 面试宝典【刷题系列】

ASP.NET Core 是一个功能强大且灵活的框架,掌握其核心概念和高级特性对于面试和实际开发都非常重要。希望这篇博文能帮助你在 ASP.NET Core 面试中脱颖而出,顺利拿到心仪的职位!

李赛赛的专栏 2541

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ASP.NET Core 应用程序Startup类介绍

Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为Startup。在主程序的Web Host生成器(WebHostBuilderExtensions)的 UseStartup  扩展方法中指定启动类名称。 您可以为不同的环境定义不同的Startup类,并在运行时选择适当的Startup类。如果在Web Host配置或选项中指定startupAssem

q781045982的博客 563

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Net core学习系列(五)——Net Core应用程序Startup类介绍

一、Startup 类 ASP.NET Core应用程序需要一个启动类,按照惯例命名为Startup。在主程序的Web Host生成器(WebHostBuilderExtensions)的 UseStartup <TStartup> 扩展方法中指定启动类名称。 您可以为不同的环境定义不同的Startup类,并在运行时选择适当的Startup类。如果在Web Host配置或...

anbixu9818的博客 1032

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

在 ASP.NET Core 6/NET 8.0 如何添加 Startup.cs

使用ASP.NET Core 6.0项目,您将找不到Startup.cs文件。默认情况下,此文件将被删除,并且是将注册依赖项和中间件放到了Program.cs中。但是,如果您是Startup.cs的粉丝或将项目升级到ASP.NET Core 6.0,你可能仍想要使用Startup.cs文件。因此,在这篇文章中,让我们将了解如何在ASP.NET Core 6项目中添加Startup.cs

学习之路,创业之光 2996

asp.net core 系列之Startup

这篇文章简单记录 ASP.NET Core中 ,startup类的一些使用。一.前言在 Startup类中,一般有两个方法:ConfigureServices 方法: ...

dotNET跨平台 353

路径 Asp.net - Asp.net Core

路径

wangyiwaterp的博客 1565

.netcore loggerfactory_asp.net core 系列之Startup

这篇文章简单记录 ASP.NET Core中 ,startup类的一些使用。一.前言在 Startup类中,一般有两个方法:ConfigureServices 方法: 用来配置应用的 service 。Configure 方法:创建应用的请求处理管道它们都在应用启动时,被ASP.NET Core runtime 调用:public class Startup{// Use this ...

weixin_39603604的博客 718

.NET Core中Startup详解

     Startup构造函数ConfigureServices方法Configure方法在ConfigureWebHostDefaults中直接配置服务和请求管道   ASP.NET Core一般使用Startup类来进行应用的配置。在构建应用主机时指定Startup类,通常通过在主机生成器上调用   WebHostBuilderExtensions.UseStartup 方法来指定 Startup类:   public static IHostBuilder CreateHostBui..

linjingyg的博客 3387

深入探究ASP.NET Core Startup的初始化

前言 Startup类相信大家都比较熟悉,在我们使用ASP.NET Core开发过程中经常用到的类,我们通常使用它进行IOC服务注册,配置中间件信息等。虽然它不是必须的,但是将这些...

dotNET跨平台 809

ASP.NET Core Startup 类

Startup类 所有的ASP.NET Core应用都至少有一个Startup类,当应用启动时会在主程序集中搜索通过在主机生成器上调用 WebHostBuilderExtensions.UseStartup 方法来指定 Startup 类。 Startup类必须包含一个Configure方法(创建应用的请求处理管道)和一个可选的ConfigureServices方法(配置应用的服务,服务是一个提供应用功能的可重用组件),这两个方法都会在应用启动的时候被调用。 使用泛型主机 (IHostBuilder)

随笔 556
上一篇: ASP.NET Core系列(二):创建第一个.Net Core 项目
下一篇: Redis总结(八)如何搭建高可用的Redis集群
afront
博客等级 码龄20年 29粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值