ASP.NET Core 中的 Main 方法

本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 
文章会随着版本进行更新,关注我获取最新版本 
本文出自《从零开始学 ASP.NET Core 与 EntityFramework Core》目录 
视频课程效果更佳:跨平台开发实战掌握 ASP.NET Core 与 EntityFramework Core

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>();
}
C#

如果您对传统的.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!");
});
}
}
C#

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

  • ConfigureServices()方法配置应用程序所需的服务
  • Configure()方法配置应用程序的请求处理管道

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

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

文章说明

如果您觉得我的文章质量还不错,欢迎打赏,也可以订阅我的视频哦 
未得到授权不得擅自转载本文内容,52abp.com 保留版权

感谢您对我的支持

[05]ASP.NET Core 中的 Main 方法的更多相关文章

  1. ASP.NET Core 中的 Main 方法

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

  2. 如何设计出和 ASP.NET Core 中 Middleware 一样的 API 方法?

    由于笔者时间有限,无法写更多的说明文本,且主要是自己用来记录学习点滴,请谅解,下面直接贴代码了(代码中有一些说明): 01-不好的设计 代码: using System; namespace Desi ...

  3. ASP.NET Core 中文文档 第二章 指南(4.6)Controller 方法与视图

    原文:Controller methods and views 作者:Rick Anderson 翻译:谢炀(Kiler) 校对:孟帅洋(书缘) .张仁建(第二年.夏) .许登洋(Seay) .姚阿勇 ...

  4. 在ASP.NET Core中构建路由的5种方法

    原文链接 :https://stormpath.com/blog/routing-in-asp-net-core 在ASP.NET Core中构建路由的5种方法 原文链接 :https://storm ...

  5. C#调用接口注意要点 socket,模拟服务器、客户端通信 在ASP.NET Core中构建路由的5种方法

    C#调用接口注意要点   在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存c ...

  6. ASP.NET Core中,UseDeveloperExceptionPage扩展方法会吃掉异常

    在ASP.NET Core中Startup类的Configure方法中,有一个扩展方法叫UseDeveloperExceptionPage,如下所示: // This method gets call ...

  7. 解析Asp.net Core中使用Session的方法

    2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Core中引 ...

  8. ASP.Net Core中处理异常的几种方法

    本文将介绍在ASP.Net Core中处理异常的几种方法 1使用开发人员异常页面(The developer exception page) 2配置HTTP错误代码页 Configuring stat ...

  9. Hangfire在ASP.NET CORE中的简单实现方法

    hangfire是执行后台任务的利器,具体请看官网介绍:https://www.hangfire.io/ 新建一个asp.net core mvc 项目 引入nuget包 Hangfire.AspNe ...

随机推荐

  1. leetcode题解:整数反转

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321  示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出 ...

  2. 十二、ITK例程-医疗图像配准的HelloWorld程序

    一.说明 医疗图像配准是ITK的一个重要内容,而我们今天想要说的一个程序则相当于是其中的HelloWorld程序. 程序源码位置: InsightToolkit-\Examples\Registrat ...

  3. [洛谷P1373][题解]小a和uim之大逃离

    (别点我我不是题目) 这道题可以很容易看出是一道dp(因为是在dp关卡里找的) 稍微想一下就可以yy出一个不错的状态: f[i][j][k][0/1]代表走到了点(i,j).膜液量相差k(小a-uim ...

  4. java大数习题

    大数加法,题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 import java.math.BigInteger; import java.ut ...

  5. Springboot关于tomcat容器配置、三大组件配置、拦截器配置

    原文地址:http://www.javayihao.top/detail/172 1.tomcat配置 Springboot默认使用的就是嵌入式servlet容器即tomcat,对于web项目,如果使 ...

  6. C++ 面向对象程序设计复习大纲

     这是我在准备C++考试时整理的提纲,如果是通过搜索引擎搜索到这篇博客的师弟师妹,建议还是先参照PPT和课本,这个大纲也不是很准确,自己总结会更有收获,多去理解含义,不要死记硬背,否则遇到概念辨析题会 ...

  7. Docker Compose file

    1.  Service configuration Compose file 是一个YAML文件,用于定义 services, networks, 和 volumes.其默认路径是./docker-c ...

  8. Linux下使命令不受终端断开的影响,保持在后台运行的几种方法及原理

    摘自https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 记录一下Linux下使命令不受终端断开的影响,保持在后台运行的几个方法及其原理.当用 ...

  9. 输出所有java进程的gc状态

    #!/bin/sh #read -t -p "请输入jstat命令监控间隔,次数:" time count read -p "输入jstat命令监控间隔(1s输出一次,输 ...

  10. AudioRecord 录制播放PCM音频

    AudioRecord 与 MediaRecorder 区别 AudioRecord 基于字节流录制,输出的是pcm数据,未进行压缩,直接保存的pcm文件不能被播放器识别播放. 可以对音频文件进行实时 ...