iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NETCore应用启动Startup类简介
  • 652
分享到

ASP.NETCore应用启动Startup类简介

2024-04-02 19:04:59 652人浏览 泡泡鱼
摘要

1.前言 Core与早期版本的 asp.net 对比,配置应用程序的方式的 Global.asax、FilterConfig.cs和RouteConfig.cs 都被Program.

1.前言

Core与早期版本的 asp.net 对比,配置应用程序的方式的 Global.asax、FilterConfig.cs和RouteConfig.cs 都被Program.cs 和 Startup.cs取代了。Program.cs作为WEB应用程序的默认入口,在没有任何修改的情况下,会调用同目录下Startup.cs中的ConfigureServices 和 Configure方法。

2.Startup类

Startup类配置服务和应用的请求管道。Program.Main方法是应用程序的托管入口。在构建应用程序的主机(WebHost)时,系统为应用程序指定 Startup 类,而Main入口通过主机生成器(IWebHostBuilder)调用Build时,生成对应的应用程序的主机(WebHost),并启动运行(Run)。

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}

2.1 当应用程序启动时调用 Startup类

当应用程序启动时,运行时会调用Startup类的 ConfigureServices 和 Configure方法:

public class Startup
{
    // Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        ...
    }

    // Use this method to configure the Http request pipeline.
    public void Configure(IApplicationBuilder app)
    {
        ...
    }
}

Startup类必须定义Configure方法,但是可选择定义一个ConfigureServices 方法,这些方法将在应用程序启动时被调用。下面我们再来了解下这两个方法。

3.ConfigureServices方法

用于设置应用程序所需要的服务。

  • 该方法可选择定义或不定义。
  • 在Configure方法配置应用程序服务之前被主机(WebHost)调用。
  • 其中按常规设置配置选项(appsettings.JSON)。

对于需要大量设置的功能,IServiceCollection 上有 Add{Service} 扩展方法。 典型 ASP.net core 应用将为实体框架(Entity Framework)、标识(Identity)和 mvc 注册服务:

public void ConfigureServices(IServiceCollection services)
{
    // 添加 Entity Framework服务
    services.ADDDbContext<ApplicationDbContext>(options =>
        options.UsesqlServer(
            _Configuration.GetConnectionString("DefaultConnection")));
    services.AddDefaultIdentity<IdentityUser>()
        .AddDefaultUI(UIFramework.Bootstrap4)
        .AddEntityFrameworkStores<ApplicationDbContext>();

    // 添加MVC设置兼容版本服务.
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    // 添加应用程序服务.
    services.AddTransient<IEmailSender, AuthMessageSender>();
    services.AddTransient<ISmsSender, AuthMessageSender>();
}

将服务添加到服务容器,使其在应用程序和Configure方法中可用。服务通过依赖关系注入(DI)或 ApplicationServices 进行解析。

4.Configure方法

用于指定应用程序响应HTTP请求的方式。
可通过将中间件(middleware)组件添加到IApplicationBuilder实例来配置请求管道。Configure方法可使用 IApplicationBuilder,但未在服务容器中注册。托管创建 IApplicationBuilder并将其直接传递到Configure。
通俗点来说,Configure方法用于指定ASP.net应用程序将如何响应每个HTTP请求,你可以配置每个请求都接受相同的响应。而更复杂的管道配置可以封装于中间件(middleware)中,并通过扩展方法添加到IApplicationBuilder上。Configure方法必须接受一个IApplicationBuilder参数。

4.1 ASP.net core模板配置的管道支持:

  • 开发人员异常页
  • 异常处理程序
  • HTTP 严格传输安全性 (HSTS)
  • https 重定向
  • 静态文件
  • 一般数据保护条例 (GDPR)
  • ASP.Net Core MVC 和 Razor Pages
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();
}

5.总结

  • Program的Main方法用于创建WebHost服务,调用启动类Startup。
  • Startup中的ConfigureServices方法用于将服务注入到IServiceCollection服务容器中。
  • Startup中的Configure方法用于应用响应HTTP请求,将中间件注册到ApplicationBuilder中来配置请求管道。

到此这篇关于ASP.NET Core应用启动Startup类的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: ASP.NETCore应用启动Startup类简介

本文链接: https://www.lsjlt.com/news/145074.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ASP.NETCore应用启动Startup类简介
    1.前言 Core与早期版本的 ASP.NET 对比,配置应用程序的方式的 Global.asax、FilterConfig.cs和RouteConfig.cs 都被Program....
    99+
    2024-04-02
  • 理解ASP.NET Core 启动类(Startup)
    目录准备工作:一份ASP.NET Core Web API应用程序Startup类Startup构造函数ConfigureServicesConfigure省略Startup类ISt...
    99+
    2024-04-02
  • Python动态类型简介
    在C语言中使用变量, 需先声明其类型, 如int a = 3, 而Python中直接 a = 3就行, Python怎么知道那代表了一个整数呢 在Python中类型是在运行过程中决定的, 而不是事先声明的. 像上面Python中运行赋值语句...
    99+
    2023-01-31
    类型 简介 动态
  • 简单实现Android应用的启动页
    前言: 平时打开手机的应用时,会跳出来3秒钟的广告后,再进入应用。今天我们就来简单实现一下引导页的功能。 1、首先,新建一个activity页面,命名:SplashActivity ...
    99+
    2024-04-02
  • Spring启动过程源码分析及简介
    目录1、BeanDefinition2、beanFactory3、BeanDefinitionReader4、ClassPathBeanDefinitionScanner5、Cond...
    99+
    2024-04-02
  • AndroidToolbar应用栏使用方法简介
    目录一、概念二、使用2.1 xml2.2 menu2.3 Manifest2.4 Activity一、概念 默认显示的 ActionBar 来自于主题指定(Manifest中appl...
    99+
    2022-12-08
    Android Toolbar Android Toolbar应用栏
  • 关于SpringBoot简介、官网构建、快速启动的问题
    目录SpringBoot概述起步依赖探索父工程探索依赖小结程序启动切换web服务器spring与springboot的对比官网构建工程进入SpringBoot官网选择依赖生成工程Sp...
    99+
    2024-04-02
  • Golang Facade模式简介及应用实践
    Golang中的Facade模式是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。Facade模式隐藏了子系...
    99+
    2023-10-09
    Golang
  • Java常用工具类库——Hutool的使用简介
    目录前言HuTool 中的一些常用工具类日期相关 API随机工具图片工具彩色转换成黑白添加文字水印加密解密工具布隆过滤器邮件工具HTML 工具HtmlUtil.cleanHtmlTa...
    99+
    2024-04-02
  • Groovy动态语言使用教程简介
    目录Groovy 简介Groovy 应用Groovy 与 JavaGroovy语法特性(相比于Java)Groovy 简介 Groovy 是构建在 JVM 上的一个轻量级却强大的动态...
    99+
    2024-04-02
  • 简单介绍Fedora Core 3系统应用
    Fedora Core 3是一种基于Linux操作系统的发行版,它是由Fedora项目开发的。Fedora Core 3提供了许多不...
    99+
    2023-09-23
    Fedora
  • REST架构及RESTful应用程序简介
    REST (REpresentation State Transfer) 描述了一个架构样式的网络系统,指的是一组架构约束条件和原则。 RESTful 指的是满足这些约束条...
    99+
    2024-04-02
  • PHP Stream 简介及应用场景解析
    PHP Stream 简介及应用场景解析 一、PHP Stream 简介 PHP是一种广泛应用于Web开发的脚本语言,而PHP Stream则是PHP中用于处理输入输出操作的重要功能。...
    99+
    2024-04-02
  • PHP8简要介绍:新特性和应用
    PHP8的新特性和用途简介 近年来,PHP语言一直在持续发展和更新,为了满足不断变化的开发需求和提高效率,PHP8版本带来了一系列令人期待的新特性。本文将对PHP8的新特性进行简要介绍,并给出相应的代码示例,以帮助读者更好地了解...
    99+
    2024-01-13
  • MySQL中decimal类型用法的简单介绍
    MySQL中支持浮点数的类型有FLOAT、DOUBLE和DECIMAL类型,DECIMAL 类型不同于FLOAT和DOUBLE,DECIMAL 实际是以串存放的。DECIMAL 可能的最大取值范围与DOUB...
    99+
    2024-04-02
  • 阿里云数据库Redis简介与应用
    阿里云数据库Redis是一种高性能、内存型数据库,提供快速读写和高可用性。它支持多种数据结构,如字符串、哈希表、列表等,适用于各种应用场景。本文将详细介绍阿里云数据库Redis的特点和使用方法,并通过实际案例来展示其在不同业务场景下的应用...
    99+
    2024-01-20
    阿里 数据库 简介
  • 怎么在Windows11上启用启动应用通知
    这篇文章主要介绍了怎么在Windows11上启用启动应用通知的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么在Windows11上启用启动应用通知文章都会有所收获,下面我们一...
    99+
    2023-04-14
    windows11
  • 怎么成功启动thinkphp应用
    这篇文章主要介绍“怎么成功启动thinkphp应用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么成功启动thinkphp应用”文章能帮助大家解决问题。安装运行环境在部署thinkphp应用程序前...
    99+
    2023-07-05
  • Win10设置快速启动加快应用启动的方法
      新装了Windows10系统,使用起来如何?有没有很快就启动应用呢?如果没有的话,那就来看一下本文关于Win快速启动的设置方法。   第一步、首先打开注册表编辑器,可以通过Windows徽标键+R来打开运行窗口,输入...
    99+
    2023-06-09
    Win10 应用 启动 方法
  • Flex应用程序怎么启动
    这篇文章主要介绍了Flex应用程序怎么启动,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex应用程序启动编写一个简单的Flex应用程序并不复杂,就算你从来没接触过Flex...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作