【1】Asp.Net Core2.2从环境配置到应用建立
作者:Eleven
来源:公众号【软谋net】
【前言】
.Net Core开源&跨平台,已经肉眼可见将成为.Net平台的未来,在企业招聘需求上已经频频见到,接触到很多公司内部都已经开始尝试Core的项目了,尤其是腾讯的财付通全部是基于Core+微服务搭建的,让人倍感振奋!Eleven最近出个专题,以当下最新的Asp.Net Core 2.2 Preview3为版本,给大家来一套系统教程,希望小伙伴儿们能多多关注!
【环境搭建】
我这边使用的VisualStudio版本为2017企业版15.7.4(并不是最新版本,专业版社区版也都是可以的)。之前安装是自带的Core是1.1版本,现在需要安装最新的sdk(dotnet-sdk-2.2.100-preview3-009430-win-x64.exe),以及最新的runtime(dotnet-runtime-2.2.0-preview3-27014-02-win-x64)。相关环境配置,需要的话可以关注底部公众号后,联系助教老师获取!
【项目建立】
下面开始动手建立Asp.Net Core2.2项目了,添加项目,选择Web,然后选择 ASP.NET Core Web应用程序模板,另外那个是原来的Framework版本的。

这里选择.NET Core,然后选择最新的ASP.NET Core2.2,选择下面的MVC应用程序,点击确定即可完成创建!建立完后的项目如下,一个典型的MVC项目,但是跟Framework下的有明显差异,增加了Program和Startup,这二位将是本文的主角了!

【Program】
看到Program,应该有种很亲切的感觉,包括里面的Main方法,这就是整个程序的入口。实际上,我们建立的这个项目,本质就是个控制台程序而已,查看项目属性可以得知。但为啥这个Program能当成MVC网站呢?

秘密就是那个CreateDefaultBuilder方法,这里面是启动一个Kestrel的服务器来完成请求的监听和响应的,在以前Core版本里,这里还有很多的配置项,现在已经内置为一个Default了。然后这里简单理解下,就是初始化一个服务器,然后Run一下,我们的Web服务器就算是启动了。其中在初始化服务器的时候,使用了一个Startup类,下面来详析一番!
【Startup】
在 ASP.NET Core 中,Startup 类提供了应用程序的入口,而且在所有应用程序中都有 Startup 类。ASP.NET 会在主程序集中搜索名为 Startup 的类(在任何命名空间下)。ASP.NET 并不关心 Startup 类是不是定义为 public,如果它符合命名规范,ASP.NET 将继续加载它。如果有多个 Startup 类,也不会触发异常,ASP.NET 将基于命名空间选择其中一个(匹配项目的根命名空间优先,否则使用第一个按字母排列的命名空间中的类)。
打开Startup类,大概分三块,这个是典型的构造函数注入,完成了一个叫IConfiguration类型变量的注入,至于是怎么注入的,后文中会讲到。这个变量是用来读取配置文件的,跟以前Framework下那个System.ConfigurationManager类差不多的。

然后是ConfigureServices方法,上面的注释描述的很清楚,是交给运行时环境调用的方法,然后用来给容器注册服务的(跟刚才说到的注入一致)。在Asp.Net Core里面,IOC容器是直接内置了的,也就是这个IServiceCollection。感兴趣的小伙伴儿可以去尝试下,直接nuget就可以下载Microsoft.Extensions.DependencyInjection,跟常见的容器用法几乎一样的,后面单独开文章再讲这个。这里完成全部需要依赖注入对象的初始化。

最下面是Configure方法,也是由运行时环境调用的,用来配置HTTP请求的处理管道的。Web的本质就是对Http请求的处理,最终得到一个响应结果,而这个方法,清晰的描述了,该如何去处理请求。

【内置服务和启动】
下面我就可以启动网站了,以前在做网站开发测试的时候,习惯性的去指定一下网站的端口和默认页,但是现在项目类型是控制台项目,相关的配置现在转移到项目的Properties--->launchSettings.json文件里面,可以在这里修改生效!顺便说一下,因为建立项目的时候,勾选了SSL支持,那么这里启动的会是https的Url,而且这个sslPort好像只能是以443开头,否则可能会无法访问。

然后一个完全没有做任何修改的Asp.Net Core2.2的项目就运行起来啦!

【结语】
本篇只介绍了最基本的环境搭建和项目建立过程,解释了一番项目结构,下一篇文章中将带大家尝试一些简单的功能开发尝试了!在这里应该感慨一下,Asp.Net Core的项目,外表看上去和之前,就是相当的不一样,而在本质上,变化可能会更多的。但是这些变化都是向着更优秀的方向的,希望大家能敞开心胸,拥抱变化!欢迎关注公众号,欢迎讨论,欢迎转发,愿天下有需求的人都能看到!
想了解更多干货,欢迎关注公众号【程序员在职场】

程序员在职场
【1】Asp.Net Core2.2从环境配置到应用建立的更多相关文章
- asp.net core + angular2 的环境配置
国内整个对 asp.net core 和 angular2这些新出来的关注度不是太好.跟国外比很大差距. 我在试着去做这个整合的时候也碰到不少问题. 最后通过查阅大量资料才弄明白. 我想肯定也会有类 ...
- windows server2008 64 asp.net 使用office组件环境配置.
服务器是windows server2008 64位系统, 我的系统需要用到Microsoft.Office.Interop.Excel组件 在上传Excel单据遇到错误:检索 COM 类工厂中 CL ...
- ASP.NET MVC 5 开发环境配置
Install-Package Ninject -Version 3.2.2 -ProjectName SportsStore.WebUIInstall-Package Ninject.Web.Com ...
- Python环境配置及项目建立
一.安装Python Python比较稳定的两个版本是Python 3.5和Python 2.7,我用的是Python 2.7,下载地址是:https://www.python.org/downloa ...
- ASP.NET和ASP.NETCore多环境配置对比
前言 多环境配置应该都很熟悉了,最为常见的便是Debug和Release,例如下图是新建的一个asp.net项目,配置文件展开共有三个文件组成 据我所知,大多公司从来没编辑过Web.Debug.con ...
- ES6学习之环境配置
环境配置 一.建立工程目录 新建dist文件夹(用于存放转化的es5文件).新建src文件夹(用于存放es6文件),在该文件夹下建立index.js文件 二.编写index.html 在根目录下新建i ...
- asp.net core2.0网站的环境搭建和网站部署
使用到的软件和硬件 1. centos7.3服务器一台 2. xshell.xftp 3. vs2017 4. .NET Core 1. 安装 li ...
- 解读ASP.NET 5 & MVC6系列(4):核心技术与环境配置
asp.net 5是下一代的asp.net,该版本进行了全部重写以适用于跨平台,新新版本中,微软引入了如下工具与命令:DNVM.DNX.DNU. DNVM(.NET Version Manager): ...
- (转) 一步一步学习ASP.NET 5 (一)- 基本概念和环境配置
转发:微软MVP 卢建晖 的文章,希望对大家有帮助. 编者语:时代在变,在csdn开博一年就发了那么的两篇文章,无论是什么原因都觉得有愧了.但是今年重心都会在这里发表一些文章,和大家谈谈.NET, 移 ...
随机推荐
- MYSQL—— year类型的使用与注意点!
mysql的日期与时间类型:分为time.date.datetime.timestamp.year,主要总结下year的用法: 1.类型支持:year 与 year(4),注意无year(2)的定义方 ...
- css3新增动画
1.transiition过渡:样式改变就会执行transition (1)格式:transiition:1s width linear,2s 1s height; (2)参数: transition ...
- 深入理解Linux内核 学习笔记(4)
第四章 中断和异常 中断通常被分为同步中断和异步中断,同步中断是当指令执行时由CPU控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后CPU才会发出中断异步中断是由其他硬件设备依照CPU时 ...
- Spring Boot 2.x整合Redis
最近在学习Spring Boot 2.x整合Redis,在这里和大家分享一下,希望对大家有帮助. Redis是什么 Redis 是开源免费高性能的key-value数据库.有以下的优势(源于Redis ...
- HTML 练习绑定onclick事件
方法一 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- 学习ELk之----02. Elastic Search操作入门
我们将使用Postman来进行日志写入操作.Postman的下载地址,你可以Google一下. 1. 在上一节中,我们启动完成ELK的Docker后,可以在浏览器中打开:http://192.168. ...
- 三、 redis进阶篇
1. redis事务 使用方法:方法为先发送multi命令告诉redis,下面所有的命令属于同一个事务,先不要执行,而是把他们暂时存起来,redis返回OK,然后后面执行需要放在同一个事务里的命令,可 ...
- requirement failed: Unacceptable value for property 'kafka.timeline.metrics.host_in_memory_aggregation', boolean values must be either 'true' or 'false
requirement failed: Unacceptable value for property 'kafka.timeline.metrics.host_in_memory_aggregati ...
- 微信小程序去除Button默认样式
在小程序开发过程中,使用率蛮高的组件button,因为经常要去除默认样式,然后再自定义样式,所以经常写,自己也总结分享一下简单的实现步骤. (一)实现效果1.实现前(默认样式): 2.实现后(去除默认 ...
- Mac电脑上一款非常时尚高清的动态壁纸Living Wallpaper HD
很多朋友Mac电脑上都喜欢用动态壁纸,Living Wallpaper HD是本人尝试的一款非常不错的高清动态壁纸.有时钟.天气等各种组建,非常时尚美观. Living Wallpaper HD下载地 ...