[05]ASP.NET Core 中的 Main 方法
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>();
}
如果您对传统的.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 保留版权
感谢您对我的支持
[05]ASP.NET Core 中的 Main 方法的更多相关文章
- ASP.NET Core 中的 Main 方法
ASP.NET Core 中的 Main 方法 在 ASP.NET Core 项目中,我们有一个名为Program.cs的文件.在这个文件中,我们有一个public static void Main( ...
- 如何设计出和 ASP.NET Core 中 Middleware 一样的 API 方法?
由于笔者时间有限,无法写更多的说明文本,且主要是自己用来记录学习点滴,请谅解,下面直接贴代码了(代码中有一些说明): 01-不好的设计 代码: using System; namespace Desi ...
- ASP.NET Core 中文文档 第二章 指南(4.6)Controller 方法与视图
原文:Controller methods and views 作者:Rick Anderson 翻译:谢炀(Kiler) 校对:孟帅洋(书缘) .张仁建(第二年.夏) .许登洋(Seay) .姚阿勇 ...
- 在ASP.NET Core中构建路由的5种方法
原文链接 :https://stormpath.com/blog/routing-in-asp-net-core 在ASP.NET Core中构建路由的5种方法 原文链接 :https://storm ...
- C#调用接口注意要点 socket,模拟服务器、客户端通信 在ASP.NET Core中构建路由的5种方法
C#调用接口注意要点 在用C#调用接口的时候,遇到需要通过调用登录接口才能调用其他的接口,因为在其他的接口需要在登录的状态下保存Cookie值才能有权限调用, 所以首先需要通过调用登录接口来保存c ...
- ASP.NET Core中,UseDeveloperExceptionPage扩展方法会吃掉异常
在ASP.NET Core中Startup类的Configure方法中,有一个扩展方法叫UseDeveloperExceptionPage,如下所示: // This method gets call ...
- 解析Asp.net Core中使用Session的方法
2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Core中引 ...
- ASP.Net Core中处理异常的几种方法
本文将介绍在ASP.Net Core中处理异常的几种方法 1使用开发人员异常页面(The developer exception page) 2配置HTTP错误代码页 Configuring stat ...
- Hangfire在ASP.NET CORE中的简单实现方法
hangfire是执行后台任务的利器,具体请看官网介绍:https://www.hangfire.io/ 新建一个asp.net core mvc 项目 引入nuget包 Hangfire.AspNe ...
随机推荐
- shell 脚本里的$(( ))、$( )、``与${ }的区别
shell 脚本里的命令执行 1. 在bash中,$( )与` `(反引号)都是用来作命令替换的. 命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组 ...
- 解决Android Screen Monitor在android8.0及以上系统报错:"E/Screenshot: Unsupported protocol: 2"
1.打开命令窗口,切换到 asm.jar 所在目录,执行 java -jar asm.jar,正常情况下打开后连接上设备会显示出画面 2.但是在android8.0以上系统该asm.jar包就无法正常 ...
- Java学习笔记(9)--- 重写,重载,多态
1.重写: a.定义: 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变.即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为. 也就是说子类能 ...
- Python目录教程集和资料分享
以下整理的是python的基础笔记,需要python视频资料或更多的请关注我的公众号! 查看内容点击链接: Python简介及安装 Python的3种执行方式 变量及变量计算和引用 if, elif, ...
- windows10 安装win10和ubuntu 16.04双系统
安装教程如下 亲测可用 https://www.cnblogs.com/masbay/p/10844857.html 镜像路径如下 http://releases.ubuntu.com/16.04/ ...
- IT兄弟连 HTML5教程 HTML5文字版面和编辑标签 HTML框架结构
使用HTML框架结构可以把一个浏览器窗口划分为若干个小窗口,每个窗口可以显示不同的URL网页,每个框架里的网页相互独立.这样不仅可以非常方便地在浏览器中同时浏览不同的页面效果,而且可以非常方便地完成导 ...
- window.innerHeight和document.documentElement.clientHeight区别
今天有人问我这个问题,做了个小例子来记录一下子. 首先这两个都是获取可视区域的高度,那他们有什么区别呢 1.window.innerHeight属于BOM(浏览器对象模型),而document.doc ...
- 超级简单的数组加单链表实现Map
/** * 超级简单的数组加单链表实现Map * @author jlj * */ public class MyHashMap { public MyList[] lists; public int ...
- Thinkphp <= 5.0.10 缓存getshell复现
目录 Thinkphp <= 5.0.10 缓存getshell复现 0x01 poc 0x02 跟踪源码 0x03 审计思路 0x04 补丁 0x05 参考 Thinkphp <= 5. ...
- requests-html库render的使用
一.render的使用 from requests_html import HTMLSession session =HTMLSession() response = session.get('htt ...