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. ES--05

    第四十一讲!分词器内部组成 内置分词器 课程大纲 1.什么是分词器 切分词语,normalization(提升recall召回率) 给你一段句子,然后将这段句子拆分成一个一个的单个的单词,同时对每个单 ...

  2. python操作三大主流数据库(13)python操作redis之新闻项目实战①新闻数据的导入

    1.新闻处理页面redis_news.py #coding:utf-8 import math import redis class RedisNews(object): def __init__(s ...

  3. python操作三大主流数据库(10)python操作mongodb数据库④mongodb新闻项目实战

    python操作mongodb数据库④mongodb新闻项目实战 参考文档:http://flask-mongoengine.readthedocs.io/en/latest/ 目录: [root@n ...

  4. UML教程

    1.前言 1.1 前言   本资料对UML1.5各种模型图的构成和功能进行说明,通过本资料的学习达到可以读懂UML模型图的目的.本资料不涉及模型图作成的要点等相关知识. 1.2 UML概述 1.2.1 ...

  5. python学习第41天

    # 索引 # 认识mysql中的key # index key 普通索引,能够加速查询,辅助索引 # unique key 唯一 + 索引,辅助索引 # primary key 唯一 + 非空 + 聚 ...

  6. C# pdf转word

    引用组件 Spire.Pdf,去官网下载安装,在bin目录里面有需要的dll文件. static void Main(string[] args) { #region Pdf转word PdfDocu ...

  7. Confluence 6 重要缓存和监控

    重要缓存 下面的建议是基本上的一些配置帮助.在大型数据库中,20-30% 的数据库表大型可能是不需要如此膨胀的.在缓存配置的界面中,检查有效率和使用率的配置来进行必要的修改. 内容对象缓存(Conte ...

  8. Confluence 6 后台中的选择站点首页

    后台中的选择站点首页选择项. https://www.cwiki.us/display/CONFLUENCEWIKI/Configuring+the+Site+Home+Page

  9. metaclass(元类)

    一.创建类的执行流程 二.元类的认识 什么是元类呢?在Python3中继承type的就是元类 二.元类的示例 方式一: # 方式一 class MyType(type): '''继承type的就是元类 ...

  10. Python基础之递归函数与二分法

    一.递归函数 定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 我们来举个例子吧,比如:有个人问“egon”年龄,他说比“小大”大5岁,“小大”又说比“小保 ...