本文出自《从零开始学ASP.NET CORE MVC》
推荐文章:ASP.NET Core Web 项目文件

ASP.NET Core 中的 Main方法

一个开始专心写字的人

在ASP.NET Core项目中,我们有一个名为Program.cs的文件。在这个文件中,我们有一个public static void Main()方法 。

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

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

如果您对传统的.NET Framework有任何使用经验,则知道控制台应用程序具有Main()方法,它是该控制台程序的入口。

但今天,我们正在创建一个ASP.NET Core Web应用程序而不是控制台应用程序。因此,我们想到的一个显而易见的问题是。
为什么我们也会有一个Main()方法?

所以这个知识点,要记住的。ASP.NET Core 应用程序最初作为控制台应用程序启动,而Program.cs文件中的Main()方法就是入口。

因此,当运行时执行我们的应用程序时,它会查找此Main()方法以及执行配置开始的地方。

这个Main()方法配置asp.net Core 并启动它,此时,它成为一个asp.net Core Web应用程序。因此,如果你跟踪一下Main()方法,它会调用CreateWebHostBuilder()方法传递命令行参数。

然后你就可以看到,CreateWebHostBuilder()方法返回一个实现IWebHostBuilder的对象。
在此对象上,调用Build()方法,会将我们的ASP.NET Core 应用程序生成并且托管到服务器上。
在服务器上的程序调用Run() 方法,该方法运行后Web应用程序并开始侦听传入的HTTP请求。
CreateWebHostBuilder()方法调用静态类WebHost中的静态方法CreateDefaultBuilder()
CreateDefaultBuilder()方法会在服务器上创建一个已经预设置好的默认值。
CreateDefaultBuilder()方法执行多项操作来创建服务器.

我们在后面的视频中详细讨论CreateDefaultBuilder()中的所有方法。

而现在你只需要了解CreateDefaultBuilder()方法是用于在服务器上创建程序配置的默认值而存在。
它作为设置服务器的一部分,还使用了IWebHostBuilder接口中的UseStartup()的扩展方法来配置Startup类。
如果您不熟悉扩展方法的概念, 那么你该去补课了。

按照微软的规则,ASP.NET Core中的启动类名为Startup。 这个类有2种方法。

public class Startup{public void ConfigureServices(IServiceCollection services){ }

public void Configure(IApplicationBuilder app, IHostingEnvironment env){if (env.IsDevelopment())        {            app.UseDeveloperExceptionPage();        }

        app.Run(async (context) =>        {            await context.Response.WriteAsync("Hello World!");        });    }}

Startup类虽然只有两个方法,但是这两个方法做了非常重要的事情:

  • ConfigureServices()方法配置应用程序所需的服务

  • Configure()方法配置应用程序的请求处理管道

我们理解这两种方法的作用是非常重要。

在后面的课程中,我们会大量使用这两种方法。到时候需要大家多次加深印象。

硬广专区

如果您觉得我的文章质量还不错,欢迎打赏,也可以订阅我的视频哦

未得到授权不得擅自转载本文内容,52abp.com保留版权

文字版目录: https://www.52abp.com/Wiki/mvc/latest/1.Intro

代码托管地址:https://gitee.com/aiabpedu
知乎专栏:https://zhuanlan.zhihu.com/52abp

交流QQ群:952387474《微软MVP带你学ASP.NET CORE》
【收费】腾讯课堂: https://ke.qq.com/course/392589?tuin=2522cdf3 
【免费】youtube视频专区:http://t.cn/Ei0F2EB 
【免费】B站: https://space.bilibili.com/2954671 
免费的更新慢,收费的更新快,仅此而已。就这样。

「好看」的人都【在看】↓↓↓

《从零开始学ASP.NET CORE MVC》:ASP.NET Core 中的 Main方法(5)相关推荐

  1. 用ASP.NET Core MVC 和 EF Core 构建Web应用 (一)

    系统必备 .NET Core 2.0.0 SDK 或更高版本. 已安装 ASP.NET 和 Web 开发工作负载的 Visual Studio 2017 15.3 版或更高版本. 创建Web应用程序 ...

  2. ASP.NET Core MVC 和 EF Core 教程 - 创建、读取、更新和删除

    作者:Tom Dykstra 和 Rick Anderson Contoso 大学示例 web 应用程序演示如何使用 Entity Framework Core 和 Visual Studio 创建 ...

  3. 使用.NET Core MVC Web应用程序中的ResponseCache属性处理缓存

    HTTP响应的缓存意味着当发出HTTP请求时,服务器生成的响应由浏览器或服务器存储在某个地方,以便在对同一资源的连续HTTP请求中重复使用.实质上,我们正在存储生成的响应,并将该响应重用于后续请求一段 ...

  4. 【从零开始学GIS再到精通GIS】ArcGIS中的绘图基操作(一)

    (收藏的同时麻烦点赞啊亲!) 大家好 最近和几个刚入行的小朋友们聊天,发现小朋友们现在很关注热点,并且有着一个共性的担忧: "国土空间规划是规划行业的未来,可是我们学校还不教我们GIS,好慌 ...

  5. 基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-2

    来个目录吧: 第一章-入门 第二章- Entity Framework Core Nuget包管理 第三章-创建.修改.删除.查询 第四章-排序.过滤.分页.分组 第五章-迁移,EF Core 的co ...

  6. 用ASP.NET Core MVC 和 EF Core 构建Web应用 (六)

    前面创建了学校数据模型. 本节将读取并显示相关数据 - 即 Entity Framework 加载到导航属性中的数据. 相关数据的预先加载.显式加载和延迟加载 对象关系映射 (ORM) 框架(如 En ...

  7. 从零开始学java 框架_从零开始学 Java - 搭建 Spring MVC 框架

    如果创建一个 Spring 项目 Spring MVC 框架在 Java 的 Web 项目中应该是无人不知的吧,你不会搭建一个 Spring 框架?作为身为一个刚刚学习Java的我都会,如果你不会的话 ...

  8. ASP.NET Core 进程内(InProcess)托管(6)《从零开始学ASP.NET CORE MVC》:

    本文出自<从零开始学ASP.NET CORE MVC> 推荐文章:ASP.NET Core 中的 Main方法 ASP.NET Core 进程内(InProcess)托管 在这个视频中我们 ...

  9. 《从零开始学ASP.NET CORE MVC》课程介绍

    大家好,欢迎来到52ABP学院,收看我们的 <从零开始学ASP.NET CORE MVC>. ASP.NET Core 简介 从2015年开始随时互联网成长,云计算和AI.大数据的爆发,大 ...

最新文章

  1. 获取保存在沙盒中plist文件的用户的字典信息
  2. RT-Thread与智能车比赛
  3. ubuntu 启动器
  4. Spring Boot-自动配置之底层原理
  5. 怎么在android中定义泛型,android – 如何在GSON TypeToken类中使用自定义泛型?
  6. audino python_用 Python 实现 PowerDesigner 数据模型文件的处理
  7. nginx php分离,nginx-php配置动静分离
  8. 20145239杜文超 《Java程序设计》第7周学习总结
  9. 桂电计算机实训报告总结,桂林电子科技大学信息科技学院
  10. java ajax cookies_HttpOnly cookie如何处理AJAX请求?
  11. Vegas轻松get制作动态背景技能
  12. go并发编程之美(二)、go内存模型
  13. 几种取时间的方法(附代码)
  14. android 休眠锁
  15. vue将json格式的字符串格式化后输出到web界面上
  16. 词汇怎么背---30天搞定8000单词
  17. C++ inline weak symbol and so on
  18. ie加载项存在残留是什么_Win7系统遇到IE加载项故障的原因及两种解决办法
  19. 更新adfs的证书_ADFS服务证书更新介绍
  20. STM32学习日记1---光敏传感器模块

热门文章

  1. facebook 邀请好友_如何查看紧急情况下您的Facebook朋友是否安全
  2. 搭建 vue2 单元测试环境(karma+mocha+webpack3)
  3. 思科三层交换机充当路由器实现全网互通
  4. WPF定时刷新UI界面
  5. 如何像Uber一样给工程师派单,解放外包生产力?
  6. POJ3751 时间日期格式转换【日期计算】
  7. IDEA中maven如何将jar包导入本地的maven库
  8. DISCUZ7.2在通达OA2009桌面显示技巧
  9. Windows Server 2003域和活动目录
  10. WPF 基础控件之 DatePicker 样式