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. VS2013中编译openssl的步骤和使用设置

    一.VS2013中编译openssl的步骤 版本号:openssl-1.0.1e 1.下载 OpenSSL http://www.openssl.org/,并解压到d:\openssl-1.0.1e目 ...

  2. Qt图片显示

    1.图片截取指定大小 void Setting_TabProduct::changeImageSize(int width,int height,QString imgFile) { QPixmap ...

  3. ansible笔记(10):初识ansible playbook

    ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...

  4. hue的历史查询记录querys乱码问题解决

    hue的历史查询记录querys乱码问题解决: master1中配置文件/home/hadoop/.versions/hue-3.10.0/desktop/conf/hue.ini 可以看到连接的是m ...

  5. svn:Item ‘XXXXXX’ is out of date

    问题描述:     工作副本没有更新到最新版本 svn: 提交失败(细节如下): svn: 目录 "D:\develop\workspace\gxcjx\src\main\resources ...

  6. javascript移动端禁止页面滑动的解决方案

    1 前言 移动端网页,发现ios平台的iphone或者ipad,网页可以上下左右移动,而Android版则不会.仅作为记录使用. 2 代码 var mo=function(e){e.preventDe ...

  7. 大数据mapreduce二分法ip定位之Python实现

    ip定位数据大约12M,采用-chacheFile 分发 文件来源https://pan.baidu.com/s/1J0pwTafHgt4T0k3vV_gC-A 格式大致格式如下: 0.0.0.0 0 ...

  8. jQuery-lazyload参数

    1.placeholder placeholder:'图片地址',用图片提前占据将要加载的图片的位置. 2.effect effect:‘fadeIn’ 表示用何种效果载入,eg:show()直接加载 ...

  9. 移动端点击出现阴影 css解决方案

    a,img,button,input,textarea,div{-webkit-tap-highlight-color:rgba(255,255,255,0);}

  10. Java基础之多线程框架

    一.进程与线程的区别 1.定义: 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比 ...