【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, 移 ...
随机推荐
- exgcd学习笔记
扩展欧几里得算法是当已知a和b时,求得一组x和y使得 首先,根据数论中的相关定理,解一定存在 //留坑待填 之后我们可以推一推式子 将a替换掉 展开括号 提出b,合并 且 设 现在已经将 ...
- java中的数组二分法
数组二分法意在以较快的速度查找到某个值的下标位置. 二分法的核心思想:找到一个数组的中间位置值,判断某个数值是在这个中间值的左边还是右边,如果是左边,将中间位置之前进行二分,二分后,结束位置变为原始中 ...
- css 滚动视差 之 水波纹效果
核心属性: background-attachment 这个属性就牛逼了, 它可以定义背景图片是相对视口固定, 还是随着视口滚动, 加上这个属性网页瞬间就从屌丝变成 高大上. 我们来看个例子: htm ...
- php架构之路
鉴于最近跟小伙伴聊了很多PHP架构发展方向的问题,相关技术整理了一下,也顺便规划了一下自己的2019年. 一.常用的设计模式以及使用场景 以下是我用到过的 工厂,单例,策略,注册,适配,观察者,原 ...
- Android版数据结构与算法(三):基于链表的实现LinkedList源码彻底分析
版权声明:本文出自汪磊的博客,未经作者允许禁止转载. LinkedList 是一个双向链表.它可以被当作堆栈.队列或双端队列进行操作.LinkedList相对于ArrayList来说,添加,删除元素效 ...
- Mac OS X中开启或关闭显示隐藏文件命令
前言:之前一直用的都是 windows 系统的电脑,刚接触 Mac ,很多功能都不熟悉,写下博客记录一下,以防以后忘记,也给后来者提供方便. 命令行方式:显示隐藏文件: defaults write ...
- LeetCode算法题-Rotate String(Java实现)
这是悦乐书的第317次更新,第338篇原创 在开始今天的算法题前,说几句,今天是世界读书日,推荐两本书给大家,<终身成长>和<禅与摩托车维修艺术>,值得好好阅读和反复阅读. 0 ...
- mysql关联表更改表多个字段值
关联表更改某一个字段值:更改部分数据,外层where条件控制更改记录的数量 BEGIN; " ; "; ROLLBACK; -- COMMIT; 关联表更改某一个字段值:更改全部记 ...
- 接触新的项目,构建时候报错:Failure to find io.netty:netty-tcnative:jar:${os.detected.classifier}:2.0.7.Final in
详细信息如下: Failure to find io.netty:netty-tcnative:jar:${os.detected.classifier}:2.0.7.Final in http:// ...
- 神奇的选择器 :focus-within
CSS 的伪类选择器和伪元素选择器,让 CSS 有了更为强大的功能. 伪类大家听的多了,伪元素可能听到的不是那么频繁,其实 CSS 对这两个是有区分的. 有个错误有必要每次讲到伪类都提一下,有时你会发 ...