ASP.NET Core项目结构的介绍
上节课我们创建了第一个ASP.NET Core的项目结构,那么这些结构中各个文件夹和文件都有什么作用呢?
这节课我们一起来认识整个项目结构。
一、外部源
如果我们有使用项目外的其他扩展,可以在这里查看。
二、脚本文档
官方给我们生成的常用js脚本插件。
三、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应用程序。
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属于配置文件。
可以配置项目的运行端口号、数据库链接信息等。
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应用程序的主机构建器。
它的作用包括:
创建一个新的WebApplication实例,用于承载和运行Web应用程序。
配置应用程序的主机环境(例如Development、Staging、Production)和应用程序根目录。
设置应用程序的配置(Configuration)和日志(Logging)。
注册应用程序的服务和中间件。
设置应用程序的路由和端口等。
通过使用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日志
日志是用来记录系统操作、用户操作、系统运行状态等技术,是大型企业软件系统的重要组成部分。
记录日志一般有两个目的:
故障定位
显示程序运行状态
ASP.NET Core支持适用于各种内置和第三方日志记录提供程序的日志记录API
ASP.NET Core 定义了以下日志级别(LogLevel),按严重性从低到高排列。
跟踪级别
调试级别
信息级别
警告级别
错误级别
严重级别
在ASP.NET Core Web应用程序项目中使用日志的步骤如下:
添加提供程序
一般.NET程序的Program.cs中通过调用提供程序Add{ProviderName}扩展方法添加日志提供程序,如使用ConfigureLogging()方法注册日志提供程序,先使用ClearProviders()方法清除默认日志提供程序,再使用AddConsole()方法添加控制台提供程序
在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>
需要购买本课才能留言哦~