目录结构说明

目录/文件 说明
依赖项 ASP.NET Core 开发、构建和运行过程中的依赖想,一般都是 NuGet 包和一些 SDK
Properties 配置,存放了一些 .json 文件用于配置 ASP.NET Core 项目
Propertics/launchSettings.json 启动配置文件,为一个 ASP.NET Core 应用保存特有的配置标准,用于应用的启动准备工作,包括环境变量,开发端口等
wwwroot 网站跟目录,存放类似于 CSS、JS 和图片、还有 HTML 文件等静态资源文件的目录
Program.cs 这个文件包含了 ASP.NET Core 应用的 Main 方法,负责配置和启动应用程序
Startup.cs Startup.cs 文件是 ASP.NET Core 的项目的入口启动文件

Program.cs 和 Startup.cs 的区别在于 Program.cs 会调用 Startup.cs ,这个可以通过 Program.cs 中的代码看出来

WebHost.CreateDefaultBuilder(args).UseStartup<Startup>();

当然了,还有很多其它的文件,但这些文件不是 ASP.NET Core 的必要组成部分

磁盘目录结构

我们可以打开项目保存的位置看一下磁盘目录结构

磁盘目录结构和项目目录结构大同小异,除了多了两个目录: obj 和 bin

目录 说明
obj obj 目录包括项目运行需要引用的一些类、方法和接口
bin bin 目录是项目程序目录,包括运行时配置文件等等

Startup.cs类介绍

在 ASP.NET Core 中是使用 Startup.cs 加载配置和启动代码

Startup.cs 文件中有一个 Startup 类,在这个类中可以配置应用程序,甚至配置配置源

默认的 Startup.cs 文件内容

Startup.cs 文件中默认的内容如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection; namespace HelloWorld
{
public class Startup
{
// 该方法在运行时被调用。
// 可以使用该方法将服务添加到容器中
// 更多信息配置应用程序的信息,可以查看 https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
} // 该方法在运行时被调用
// 可以使用该方法来配置 HTTP 请求管道
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
}
}

Startup 类

Startup 类可以用来定义请求处理管道和配置应用程序需要的服务。

Startup 类必须是公开的,且必须包含以下两个方法

  1. ConfigureServices() 方法

    public void ConfigureServices(IServiceCollection services){}
    

    ConfigureServices() 方法用于定义应用程序所需要的服务,例如 ASP.NET Core MVC 、 Entity Framework Core 和 Identity 等等

    关于 服务 我们会再接下来的章节中详细介绍

  2. Configure() 方法

    public void Configure(IApplicationBuilder app, IHostingEnvironment env){}
    

    Configure() 用于定义请求管道中的中间件

    关于 请求管道 的概念,我们会在接下来的章节中详细介绍

项目配置

Startup 类中的 Configure() 方法用于配置和构建 HTTP 请求管道的地方

该怎么理解这句话呢?

其实也就是说,Configure() 方法可以用来定义我们的应用程序如何响应请求

对于任意网址,默认情况下它只会输出 Hello World!

如果我们希望应用程序的行为不同,我们需要在 Configure() 方法中添加其他代码来更改管道

例如,如果我们想要为诸如 index.html 之类的静态文件提供服务,则需要向 Configure() 方法添加一些代码

例如,如果想要给 ASP.NET MVC 控制器发送错误页面或路由请求,都需要在这个 Configure() 方法中做一些工作

动态响应内容

默认情况下,我们为每个请求都提供了一个硬编码的响应 Hello World!

接下里来我们不再使用硬编码,而是从某个组件中加载字符串来响应的每一个请求

  1. 在解决方案管理器的 HelloWorld 项目上点击右键,选择 添加 -> 新建文件

    如果你的电脑是 Windows ,则是 添加 -> 新建项

  2. 在新建文件对话框中,选中左边的 Web,然后选中右边的 空 JSON 文件

    如果你的电脑是 Windows ,则是先选中 ASP.NET Core 下的 常规 ( Genreral ) 然后选中 JSON 文件

  3. 在名称中输入 AppSettings.json,然后点击右下脚的 新建 按钮,添加一个 AppSettings.json 文件

    如果你的电脑是 Windows ,则是点击 添加 按钮

  4. 然后双击 AppSettings.json 打开文件,输入以下内容

    {
    "message":"Hello World!\n你好,简单教程,你的网址是 www.twle.cn 吗?"
    }
  5. 双击打开 Startup.cs 文件,在 Startup 类中添加一个可读写属性 Configuration

    public IConfiguration Configuration { get; set; }
    
  6. 修改 Startup 类,添加 Startup() 构造函数,加载 AppSettings.json 文件,然后构建配置项

    public Startup()
    {
    var builder = new ConfigurationBuilder().AddJsonFile("AppSettings.json");
    Configuration = builder.Build();
    }
  7. 最后修改 Configure() 方法,从配置项中读取 message 并作为响应的内容

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
    if (env.IsDevelopment())
    {
    app.UseDeveloperExceptionPage();
    } app.Run(async (context) =>
    {
    var msg = Configuration["message"];
    await context.Response.WriteAsync(msg);
    });
    }

修改完成后的代码如下

Startup.cs

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration; namespace HelloWorld
{
public class Startup
{
public Startup()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("AppSettings.json");
Configuration = builder.Build();
} public IConfiguration Configuration { get; set; } // This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.Run(async (context) =>
{
var msg = Configuration["message"];
await context.Response.WriteAsync(msg);
});
}
}
}

点击绿色三角形运行项目 ( 如果项目已经在运行则直接刷新浏览器即可 )

NetCore Web项目目录结构说明的更多相关文章

  1. 1-5Tomcat 目录结构 和 web项目目录结构

    对应我的安装路径: web项目目录结构

  2. web项目目录结构

    eclipse web项目目录结构 按照 Java EE 规范的规定,一个典型的 Web 应用程序有四个部分: 1.  公开目录 ; 2. WEB-INF/web.xml 文件,发布描述符(必选) ; ...

  3. 最全的 eclipse web 项目目录结构以及Tomcat的各个目录的作用

    本文会尽可能对 java web 项目的目录结构做出最详细的解释,尽量做到浅显易懂. eclipse web 项目目录结构   java web 项目事例 03-springmvc-drien-xgq ...

  4. idea中的java web项目(添加jar包介绍)和java maven web项目目录结构

    java web项目 web项目下web根目录名称是可以更改的 idea中新建java web项目,默认src为Sources Root,当然也可以手动改,在Sources Root下右键只能新建Pa ...

  5. JAVA WEB项目目录结构以及web应用部署的根目录,编译路径和项目根目录的区别

    本文链接:https://blog.csdn.net/l00149133/article/details/78984083 web应用部署的根目录,编译路径和项目的根目录有什么区别? 直接上例子: 你 ...

  6. IntelliJ IDEA 中 Web项目 目录结构

    --src     应用程序源代码和测试程序代码的根目录 --main --java 应用程序源代码目录 --resources 应用程序用到的资源文件(一般都是配置文件) --webapp web项 ...

  7. Eclipse创建web项目目录结构

    效果图如下: 0 新建Web项目 1.右击项目MyProject进入Java Build Path 2. 点击Add Folder按钮,进入如下界面 3.选择src,点击Add New Folder按 ...

  8. Java Web 项目目录结构

    为了使 Web 容器顺利地执行 Web 应用,开发者需要以一种标准的方式将 Web 项目中的资源(Servlets.JSP 等)打包.一个 Web 项目的目录结构可分为两种: 发布目录结构 Web 容 ...

  9. 两张图搞清楚Eclipse上的Web项目目录

    从MyEclipse转到Eclipse起初有点不习惯eclipse的目录结构,顺手一查看到的文章帮助很大,转载一下: 原文链接:https://www.jianshu.com/p/91050dfcbe ...

随机推荐

  1. notepad++,vim驼峰命名与下划线的互相转换

    notepad++,vim驼峰命名与下划线的互相转换   IDDAY_TIMEDAY_FULL_NAMEDAY_OF_WEEKYEAR_MONTHYREA_NAME 下滑线转驼峰 大写转小写 有这么些 ...

  2. ICCV2019 oral:Wavelet Domain Style Transfer for an Effective Perception-distortion Tradeoff in Single Image Super-Resolution

    引言 基于低分辨率的图像恢复高分辨图像具有重要意义,近年来,利用深度学习做单张图像超分辨主要有两个大方向:1.减小失真度(distortion, 意味着高PSNR)的图像超分辨,这类方法主要最小化均方 ...

  3. 前端必学---JavaScript数据结构与算法---简介

    前端必学---JavaScript数据结构与算法---简介 1. 数据结构: 数据结构是相互之间存在一种或者多种特定关系的数据元素的集合.---<大话数据结构> 1.1 数据结构的分类 1 ...

  4. 通过命令创建Django项目

    本人是使用window10操作系统进行讲解Django框架,Linux系统和windows版本几乎一致,可以自行学习就可以解决. 首先在系统上创建了虚拟环境,如果不会创建,可以根据这篇文章学习:htt ...

  5. AgileReview 代码检视工具使用

    AgileReview 它是一个eclipse插件. http://www.agilereview.org/ 官网地址. 四种下载插件方式. 1.Marketplace QuickInstall    ...

  6. opencv python:ROI 与 泛洪填充

    提取ROI区域,处理然后放回去: 泛洪填充 测试代码:显示一张图像,鼠标点击之后,会从该点开始进行填充,显示填充后的结果图像 注:二值图像的填充需要使用选项:cv2.FLOODFILL_MASK_ON ...

  7. 利用graphviz软件和pycallgraph库自动生成Python代码函数调用关系图

    参考博文:https://blog.csdn.net/qq_36408085/article/details/82952846 https://blog.csdn.net/fondax/article ...

  8. 控制面保护(CPPr)

    除了CoPP外,管理员还可以通过使用控制面保护(Control Plane Protection,CPPr)机制抵御针对控制面的攻击,从本质上讲,CPPr属于CoPP的扩展,在CPPr中控制面接口被划 ...

  9. ES2.3.5版本的数据类型

    1,最近使用了2.3.5版本的ES,发现在创建索引的时候出了以下错误. (1)例: POST 192.168.11.166:9200/article3/article/_mapping { " ...

  10. 后端——框架——持久层框架——Mybatis——补充——pageHelper(分页)插件

    Pagehelper插件的知识点大致可以分为三个部分 搭建环境,引入jar包,配置. 使用方式,只需要记住一种即可.类似于在写SQL语句中,可以left join,也可以right join,它们实现 ...