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项目架构和配置文件解读的更多相关文章

  1. net core体系-web应用程序-4net core2.0大白话带你入门-2asp.net core新建项目

    新建asp.net core项目   开发环境:Windows Server R2 2008 开发工具:Microsoft Visual Studio 2017 新建asp.net core项目 创建 ...

  2. net core体系-web应用程序-4net core2.0大白话带你入门-7asp.net core日志组件(Logger和Nlog)

    asp.net core日志组件   日志介绍 Logging的使用 1. appsettings.json中Logging的介绍 Logging的配置信息是保存在appsettings.json配置 ...

  3. net core体系-web应用程序-4net core2.0大白话带你入门-6asp.net core配置文件

    asp.net core配置文件   读取配置文件 asp.net core使用appsettings.json代替传统.net framework的web.config中的<appSettin ...

  4. net core体系-web应用程序-4net core2.0大白话带你入门-5asp.net core环境变量详解

    asp.net core环境变量详解   环境变量详解 Windows操作系统的环境变量在哪设置应该都知道了. Linux(centos版本)的环境变量在/etc/profile里面进行设置.用户级的 ...

  5. net core体系-web应用程序-4net core2.0大白话带你入门-4asp.net core配置项目访问地址

    asp.net core配置访问地址  .net core web程序,默认使用kestrel作为web服务器. 配置Kestrel Urls有四种方式,我这里只介绍一种.其它方式可自行百度. 在Pr ...

  6. net core体系-web应用程序-4net core2.0大白话带你入门-11asp.net core 2.0 cookie的使用

    asp.net core 2.0 cookie的使用   本文假设读者已经了解cookie的概念和作用,并且在传统的.net framework平台上使用过. cookie的使用方法和之前的相比也有所 ...

  7. net core体系-web应用程序-4net core2.0大白话带你入门-10asp.net core session的使用

    asp.net core session的使用   Session介绍 本文假设读者已经了解Session的概念和作用,并且在传统的.net framework平台上使用过. Asp.net core ...

  8. net core体系-web应用程序-4net core2.0大白话带你入门-9asp.net core服务的生命周期

    asp.net core服务的生命周期   Transient:每一次GetService都会创建一个新的实例 Scoped:在同一个Scope内只初始化一个实例 ,可以理解为( 每一个request ...

  9. net core体系-web应用程序-4net core2.0大白话带你入门-8asp.net core 内置DI容器(DependencyInjection,控制翻转)的一点小理解

    asp.net core 内置DI容器的一点小理解   DI容器本质上是一个工厂,负责提供向它请求的类型的实例. .net core内置了一个轻量级的DI容器,方便开发人员面向接口编程和依赖倒置(IO ...

随机推荐

  1. MySQL的information_schema

    在一次清空一张比较大的表时(在清空前占用400多兆),发现该表中记录为0条但是空间并没有被释放,采用下面方式可查看占用情况 -- 查询各个数据库占用磁盘的情况 ,),' MB') as data_si ...

  2. Freemaker:操作集合

    <#if (id?index_of('Base') >= 0)> <choose> <when test="rootOrgID !=null and ro ...

  3. orm分组,聚合查询,执行原生sql语句

    from django.db.models import Avg from app01 import models annotate:(聚合查询) ret=models.Article.objects ...

  4. Go语言环境安装&搭建(Win)

    Go语言简介 什么是Go语言 Go语言是谷歌2009发布的第二款开源编程语言. Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持 ...

  5. 【进阶3-2期】JavaScript深入之重新认识箭头函数的this(转)

    这是我在公众号(高级前端进阶)看到的文章,现在做笔记 https://github.com/yygmind/blog/issues/21 上篇文章详细的分析了各种this的情况,看过之后对this的概 ...

  6. 【进阶2-2期】JavaScript深入之从作用域链理解闭包(转)

    这是我在公众号(高级前端进阶)看到的文章,现在做笔记   https://github.com/yygmind/blog/issues/18 红宝书(p178)上对于闭包的定义:闭包是指有权访问另外一 ...

  7. HTML之Position用法

    在此,先做声明,本篇仅是摘录自互联网,个人认为这篇文章讲的很不错,附于此地与大家共同欣赏. position的四个属性值: 1.relative2.absolute3.fixed4.static下面分 ...

  8. C语言学习及应用笔记之一:C运算符优先级及使用问题

    C语言中的运算符绝对是C语言学习和使用的一个难点,因为在2011版的标准中,C语言的运算符的数量超过40个,甚至比关键字的数量还要多.这些运算符有单目运算符.双目运算符以及三目运算符,又涉及到左结合和 ...

  9. Modbus库开发笔记之三:Modbus TCP Server开发

    在完成了前面的工作后,我们就可以实现有针对性的应用了,首先我们来实现Modbus TCP的服务器端应用.当然我们不是做具体的应用,而是对Modbus TCP的服务器端应用进行封装以供有需要时调用. 这 ...

  10. mongoDB基础使用

    环境交代 操作系统: CentOS 6.8 64位 mongodb: 4.06 安装 官方下载地址:https://www.mongodb.org/dl/linux/x86_64-rhel62 阿里云 ...