net core体系-web应用程序-4net core2.0大白话带你入门-3asp.net core项目架构和配置文件解读
asp.net core web项目目录解读
Connected Services
和传统.net web项目相比,它的功能类似于添加webservice或者wcf service的引用。暂时用不到,有兴趣的小伙伴可以深入了解。右键这个目录可以看到我们可以添加一些服务,包括云服务。
Properties
这个目录下会有一个launchSettings.json文件。顾名思义,保存的是启动时需要的相关信息,包括环境变量,URL和开发端口等。这个文件在开发环境有用,用于配置调试环境。发布的时候,这个文件不会随着一起发布。
看上图,IDE vs2017提供了新的启动工具,一个是之前的IIS Express。另外一个就是本地自宿主的方式,我这里是SongLou.Web这个web项目。两种方式分别对应不同的配置。如果开发web项目,我建议使用自宿主的方式,因为这种方式可以指定IP,也可以使用fiddler代理设置域名,进而模拟线上环境。
wwwroot
这个目录里面存放的是静态资源,css,js,images等。
依赖项
跟传统的添加引用一样。可以从nuget添加,也可以引用类库。
Controllers、Models、Views
就不多说了
appsettings.json
这个文件和之前的web.config里面的<appSettings>节点功能一样。只不过这个文件里面是json格式的数据。
Bundleconfig.json
这个文件的功能和之前App_Start目录下的BundleConfig.cs文件的功能一样。只不过之前是配置在cs文件里面的,现在是配置在json文件里面的。比如js、css文件合并等功能。在这个文件里面可以进行相关的配置。下图是.net framework(非.net core)创建的mvc项目。
Program.cs
这个文件是.net core程序入口,默认使用kestrel作为web服务器。只要按F5运行,程序首先就会进入这个文件的Main方法。.net core程序部署时可以跟IIS没有任何关系。当部署在IIS上的时候,IIS只会用作反向代理,跟nginx的反向代理功能一样。后续章节会有详细介绍。
Startup.cs
在program.cs里面会指定采用这个文件作为启动文件。这个文件非常非常重要。
Startup.cs文件里的Startup构造方法。在这个构造方法里面可以预先读取配置文件以在后面的ConfigureServices方法里使用,比如appsettings.json文件。可以根据环境变量预先读取不同环境的appsettings.json配置文件,比如生产环境、预发环境。

public Startup(IConfiguration configuration, IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.product.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables(); Configuration = builder.Build();
}

Startup.cs文件里的ConfigureService方法。利用asp.net core自带的ioc功能,将接口和实现放在DI容器里面,也就是下图中的类型为IserviceCollection的形参,它就是一个DI容器(暂时先这么认为吧,实际是一个实现了接口IservceProvider的类)。还可以在ConfigureServices方法读取配置文件的内容,注意是内容不是文件,将配置信息注入到DI容器里面。
在Configure方法里可以设置中间件,用于拦截并处理http请求。一系列的中间件可以在这个方法里面添加。另外中间件还可以自定义,利用this实现扩展方法。
在Configure方法里还可以根据Environment类判断当前的开发环境。Environment类有获取和设置系统环境变量的功能。Linux系统下可以在/etc/profile这个文件设置,windows下就是系统环境变量,就不做介绍了。
截止到现在目录已经介绍完毕。相信大家对asp.net core应该有个初步的认识了。
接下来会详细介绍asp.net core的一些知识点。
net core体系-web应用程序-4net core2.0大白话带你入门-3asp.net core项目架构和配置文件解读的更多相关文章
- net core体系-web应用程序-4net core2.0大白话带你入门-2asp.net core新建项目
新建asp.net core项目 开发环境:Windows Server R2 2008 开发工具:Microsoft Visual Studio 2017 新建asp.net core项目 创建 ...
- net core体系-web应用程序-4net core2.0大白话带你入门-7asp.net core日志组件(Logger和Nlog)
asp.net core日志组件 日志介绍 Logging的使用 1. appsettings.json中Logging的介绍 Logging的配置信息是保存在appsettings.json配置 ...
- net core体系-web应用程序-4net core2.0大白话带你入门-6asp.net core配置文件
asp.net core配置文件 读取配置文件 asp.net core使用appsettings.json代替传统.net framework的web.config中的<appSettin ...
- net core体系-web应用程序-4net core2.0大白话带你入门-5asp.net core环境变量详解
asp.net core环境变量详解 环境变量详解 Windows操作系统的环境变量在哪设置应该都知道了. Linux(centos版本)的环境变量在/etc/profile里面进行设置.用户级的 ...
- net core体系-web应用程序-4net core2.0大白话带你入门-4asp.net core配置项目访问地址
asp.net core配置访问地址 .net core web程序,默认使用kestrel作为web服务器. 配置Kestrel Urls有四种方式,我这里只介绍一种.其它方式可自行百度. 在Pr ...
- net core体系-web应用程序-4net core2.0大白话带你入门-11asp.net core 2.0 cookie的使用
asp.net core 2.0 cookie的使用 本文假设读者已经了解cookie的概念和作用,并且在传统的.net framework平台上使用过. cookie的使用方法和之前的相比也有所 ...
- net core体系-web应用程序-4net core2.0大白话带你入门-10asp.net core session的使用
asp.net core session的使用 Session介绍 本文假设读者已经了解Session的概念和作用,并且在传统的.net framework平台上使用过. Asp.net core ...
- net core体系-web应用程序-4net core2.0大白话带你入门-9asp.net core服务的生命周期
asp.net core服务的生命周期 Transient:每一次GetService都会创建一个新的实例 Scoped:在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request ...
- net core体系-web应用程序-4net core2.0大白话带你入门-8asp.net core 内置DI容器(DependencyInjection,控制翻转)的一点小理解
asp.net core 内置DI容器的一点小理解 DI容器本质上是一个工厂,负责提供向它请求的类型的实例. .net core内置了一个轻量级的DI容器,方便开发人员面向接口编程和依赖倒置(IO ...
随机推荐
- ansible结合zabbix_api批量添加主机
批量添加zabbix监控 .使用ansible配置zabbix客户端 ①修改服务器的IP(域名),为了方便使用ansible来批量操作 等同于如下sed语句 sed -i 's#Server=1.1. ...
- 利用表格分页显示数据的js组件datatable的使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 修改更新源sources.list,提高软件下载安装速度(2017.04.05)
1.切换到root用户(如果已经是root用户就直接看第二步) dnt@HackerKali:~$ su 密码: 2.用文本编辑器打开sources.list,手动添加下面的更新源 root@Hack ...
- Linux之 nginx-redis-virtualenv-mysql
mysql maraidb相关 .yum安装好,启动 安装: yum install mariadb-server mariadb 启动mabiadb: systemctl start mariadb ...
- [PHP]session的一些要点
一.session_start([array $options=array()]) 1.只能在输出http头前启动此函数,因为如果需要改写sessid的键和值,需要在http报文头发出前就开始定义了: ...
- 如何获取STM32 MCU的唯一ID
前段时间由于应用需要对产品授权进行限制,所以研究了一下有关STM32 MCU的唯一ID的资料,并最终利用它实现了我们的目标. 1.基本描述 在STM32的全系列MCU中均有一个96位的唯一设备标识符. ...
- git reset --hard xxxxxxx
关于git reset --hard xxxxxxx命令之Git版本回退 今晚代码写着写着就头脑有点发懵,手指也不听使唤了竟然让我敲出了 git reset --hard 命令,然后的然后就是之前所有 ...
- Confluence 6 重新获得附件指南
每一个文件在恢复上传到 Confluence 的时候必须单独重命名,你可以通过下面说明的 3 个方法中选择一个进行操作: 选择 A - 通过文件名恢复附件 如果你知道你需要恢复的每一个文件名,尤其是你 ...
- nginx常用命令及简单配置
nginx常用命令 nginx -c /usr/local/nginx/conf/nginx.conf 启动nginx(windows下start nginx); nginx -s quit 停止ng ...
- .tar.xz文件的解压方法
废话不多说: 直接看 方法一: tar -xvJf ***.tar.gz 方法二: 先减压成 .tar 格式的文件, 再解压 .tar #xz是一个工具, 系统中没有安装,需要下载 xz -d *** ...