71muke?v=1
在线看书
立即购买

第一章 ASP.NET Core的介绍

收起
2023-07-04更新,每天更一篇

第二章 ASP.NET Core项目的创建

收起
2023-07-04更新,每天更一篇

第三章 模型绑定的使用

收起
2023-07-11更新,每天更一篇

第四章 ASP.NET中的强类型

收起
2023-07-11更新,每天更一篇

第五章 控制器和路由的使用

收起
2023-07-11更新,每天更一篇

第六章 用户管理的实战开发

收起
2023-07-11更新,每天更一篇

ASP.NET Core项目结构的介绍

上节课我们创建了第一个ASP.NET Core的项目结构,那么这些结构中各个文件夹和文件都有什么作用呢?

这节课我们一起来认识整个项目结构。

image.png

一、外部源

如果我们有使用项目外的其他扩展,可以在这里查看。

image.png


二、脚本文档

官方给我们生成的常用js脚本插件。

image.png


三、coreTest71 文件夹

这个就是我们创建的项目名称,对应的是整个解决方案,我们要编码开发都是在这里面开发实现。

1、Connected Services

翻译过来就是连接服务,如果我们有连接服务器相关的依赖项,将会可以在这里看到。

它可以查看我们添加的服务依赖项。


2、Prorerties:用于配置项目文件

launchSettings.json:用于配置项目启动协议,默认含有Command命令启动协议和IIS启动协议,可更改相关启动协议端口号等。


3、wwwroot:用于存放css、js、favicon.ico图标等静态文件。


4、依赖项

用于管理NuGet程序包等。

里面涵盖了两个重要Asp.NETCore中两个核心的依赖扩展。

(1)Microsoft.AspNetCore.AppMicrosoft.app

它是一个NuGet软件包,它是用于构建基于ASP.NET Core的Web应用程序和服务的关键软件包之一。它包含了许多ASP.NET Core框架的核心组件和依赖项,包括HTTP处理、路由、身份验证、响应式框架和其他基本功能等。通过引用Microsoft.AspNetCore.AppMicrosoft.app软件包,开发人员可以方便地获取和使用这些核心组件,简化软件开发过程,并快速构建可靠和高性能的ASP.NET Core应用程序。

(2)Microsoft.NETCore.App

它是用于构建和运行基于.NET Core的应用程序的关键软件包之一。它包含了.NET Core运行时(Runtime)的核心组件和依赖项,包括基础类库、垃圾回收器、JIT编译器、线程管理、内存管理等。通过引用Microsoft.NETCore.App软件包,开发人员可以方便地获取和使用这些核心组件,简化软件开发过程,并快速构建可靠和高性能的.NET Core应用程序。

image.png


5、Controllers

Controllers文件夹对应的是控制器。MVC中的C。用于业务逻辑计算或调用其他服务。内含相关的控制器,默认含有HomeController控制器。


6、Models

Models文件夹对应的是模型。MVC中的M。用于实体对象,保存数据,传输数据。内含相关的模型,默认含有ErrorViewModel模型。


7、Views

Views文件夹对应的是视图。MVC中的V。用于展示数据、展示页面信息。


在Views中存在以下文件夹:

(1)Home文件夹:内含Home控制器需要的视图文件,文件名称与Home控制器中的方法相对应。

(2)Shared文件夹:内含_Layout.cshtml母版视图、_ValidationScriptsPartial.cshtml脚本验证视图、Error.cshtml错误视图。

    ①_ViewImports.cshtml:用于声明项目命名空间视图。

    ②_ViewStart.cshtml:用于启动母版视图配置。


8、appsettings.json 配置项文件

appsettings.json属于配置文件。

可以配置项目的运行端口号、数据库链接信息等。

image.png

9、Program.cs文件

它是程序的入口,整个程序的启动入口。

那么这个文件中的代码和功能是什么意思呢?我们一起来看看。

//创建ASP.NET Core Web应用程序的主机构建器。
var builder = WebApplication.CreateBuilder(args);

//向容器添加服务。
builder.Services.AddControllersWithViews();

//构建一个WebApplication实例的过程
var app = builder.Build();

// 配置HTTP请求处理管道。
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // 默认的HSTS(HTTP Strict Transport Security)值是30天。识别这个值后的30天内都会被强制使用HTTPS协议交互访问
    app.UseHsts();
}

//将Http请求重定向到Https
app.UseHttpsRedirection();
//使能够提供HTML、CSS、映像和Js等静态文件。
app.UseStaticFiles();
//向中间件管道添加路由配置。
app.UseRouting();
//授权用户访问安全资源
app.UseAuthorization();

//配置控制器和路由的映射关系,默认显示控制器中对应的方法
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

//运行应用
app.Run();


1、WebApplication对象介绍

ASP.NET Core 包含依赖关系注入 (DI),可在应用中提供配置的服务。 使用 WebApplicationBuilder.Services、builder.Services 将服务添加到 DI 容器。 实例化 WebApplicationBuilder 时,会添加许多框架提供的服务。 

var builder = WebApplication.CreateBuilder(args); 是创建ASP.NET Core Web应用程序的主机构建器。

它的作用包括:

  1. 创建一个新的WebApplication实例,用于承载和运行Web应用程序。

  2. 配置应用程序的主机环境(例如Development、Staging、Production)和应用程序根目录。

  3. 设置应用程序的配置(Configuration)和日志(Logging)。

  4. 注册应用程序的服务和中间件。

  5. 设置应用程序的路由和端口等。

通过使用WebApplication.CreateBuilder方法和builder对象,我们可以在构建过程中进行配置和设置,打造出符合我们需求的Web应用程序。最后,我们可以使用builder.Build()方法构建WebApplication实例,并通过Run方法运行应用程序。


2、app.Environment.IsDevelopment() 

配置HTTP请求处理管道。

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // 默认的HSTS(HTTP Strict Transport Security)值是30天。识别这个值后的30天内都会被强制使用HTTPS协议交互访问
    app.UseHsts();
}

配置HTTP请求处理管道是ASP.NET Core应用程序的关键步骤之一。在这个步骤中,我们可以通过使用中间件来定义请求的处理流程和顺序。

通过"Configure"方法,我们可以在WebApplication实例上定义一个回调函数,该函数将接收一个名为"app"的参数。在这个回调函数中,我们可以使用"app"参数来配置应用程序的HTTP请求处理管道。

在这个管道中,我们可以按照特定的顺序添加和配置中间件,用于处理请求和响应。例如,我们可以添加身份验证中间件、路由中间件、日志记录中间件等。每个中间件都会接收请求并执行特定的功能,然后将请求传递给下一个中间件,直到最终生成响应。

通过定义回调函数并在其中配置管道,我们可以满足应用程序的需求,并确保请求在管道中按照正确的顺序进行处理。


3、app.UseHsts();

默认的HSTS(HTTP Strict Transport Security)值是30天。对于生产环境,您可能希望更改这个值。

HSTS是一种安全策略,用于告知客户端(浏览器)通过HTTPS访问网站,并在一段时间内强制使用HTTPS,以确保连接的安全性。默认情况下,ASP.NET Core应用程序的HSTS值设置为30天。这意味着一旦客户端收到HSTS头部,并且成功地通过HTTPS访问了网站,它将在接下来的30天内强制使用HTTPS,并防止使用HTTP进行访问。

然而,对于生产环境,您可能希望更改这个值,以适应不同的需求和要求。例如,您可以将HSTS值设置为更长的时间段,以延长强制使用HTTPS的期限,或者根据实际需求进行动态调整。

通过更改HSTS值,您可以根据生产环境的要求来定制安全策略,并确保正确的HTTPS使用和连接的持久性安全。


四、ASP.NET Core日志

日志是用来记录系统操作、用户操作、系统运行状态等技术,是大型企业软件系统的重要组成部分。

记录日志一般有两个目的:

  1. 故障定位

  2. 显示程序运行状态

  3. ASP.NET Core支持适用于各种内置和第三方日志记录提供程序的日志记录API

ASP.NET Core 定义了以下日志级别(LogLevel),按严重性从低到高排列。

  1. 跟踪级别

  2. 调试级别

  3. 信息级别

  4. 警告级别

  5. 错误级别

  6. 严重级别

在ASP.NET Core Web应用程序项目中使用日志的步骤如下:

添加提供程序

  1. 一般.NET程序的Program.cs中通过调用提供程序Add{ProviderName}扩展方法添加日志提供程序,如使用ConfigureLogging()方法注册日志提供程序,先使用ClearProviders()方法清除默认日志提供程序,再使用AddConsole()方法添加控制台提供程序

  2. 在ASP.NET Core项目中默认已调用了CreateDefaultBuidler()方法来添加了日志提供程序

注意:EventLog日志提供程序只在Windows操作系统下有效。

创建日志:从控制器构造方法获取传入ILogger对象,再使用ILogger对象扩展方法来写入不同日志级别消息
常用ILogger对象扩展方法见下表

策略名说明
LogCritical()设置关键日志消息格式并写入该消息
LogDebug()设置调试日志消息格式并写入该消息
LogError()设置错误日志消息格式并写入该消息
LogInformation()设置信息日志消息格式并写入该消息
LogTrace()设置跟踪日志消息格式并写入该消息
LogWarning()设置警告日志消息格式并写入该消息

示例3.5 修改示例3.3增加日志记录,在构造方法中添加信息日志,在Index()方法中添加警告日志并显示SiteConfig对象属性的值

public class ShopController : Controller
{
    private IConfiguration config;
    private ILogger<ShopController> logger;
    public ShopController(IConfiguration configuration,ILogger<ShopController> logger)
    {
        this.config = configuration;
        this.logger = logger;
        logger.LogInformation("获取IConfiguration对象和ILogger对象");
    }
    public IActionResult Index()
    {
        logger.LogWarning("绑定配置项");
        ...省略代码...
    }
}

示例3.6 修改示例3.4的视图代码添加日志支持,需要导入日志命名空间,还需获取依赖注入日志对象

@using Microsoft.Extensions.Logging; //导入日志命名空间
@inject ILogger<ShopController> logger  //获取依赖注入日志对象
<!DOCTYPE html>
<html>
    …省略代码…
<body>
    @{
        logger.LogInformation(“显示Index.cshtml视图”); //记录日志
    }
    …省略代码…
</body>
</html>


留言

发布留言

需要购买本课才能留言哦~

{{ item.createtime | dateStr }}
×