1) 创建ASP.NET Core Web项目
2) 在本地使用IIS Express运行该项目:
3) Asp.net core Web项目结构说明:
(1) Connected Services 文件说明:
用于添加和管理与项目相关的外部服务,API以及其他数据源的链接
(2) Properties/launchSettings.json 文件说明:
01 作用: 用于配置应用程序的启动和调试设置,包括要执行的命令、是否应打开浏览器、应设置哪些环境变量等。这些设置对于本地开发和调试至关重要
02 launchSettings.json文件内容具体说明:
launchSettings.json 文件包含三个部分:iisSettings 和 profiles, $schema
001 $schema 属性说明:
1.作用:
$schema属性是一个可选的字段,它指定了JSON文件的架构(Schema)URL。这个架构URL指向一个JSON Schema文件,该文件定义了launchSettings.json文件中可以包含哪些属性、这些属性的类型、是否必须提供等约束条件。
2. 好处:
- 验证:大多数现代代码编辑器和IDE(如Visual Studio、Visual Studio Code等)都支持JSON Schema验证。当
$schema属性被指定时,编辑器会使用该URL指向的JSON Schema文件来验证launchSettings.json文件的内容。这有助于在编写配置文件时捕获错误,比如拼写错误、缺少必需的属性或提供了不支持的属性等。 - 智能感知:一些编辑器还利用JSON Schema来提供智能感知功能,比如自动完成、悬停提示和文档注释等。这可以极大地提高编写配置文件的效率和准确性。
- 文档化:JSON Schema文件本身也是一种文档形式,它详细描述了配置文件的每个属性和可能的值。这对于理解配置文件的结构和用途非常有帮助。
002.iisSettings 属性说明:
该部分定义了与IIS Express相关的设置,包括是否启用Windows身份验证、匿名身份验证,以及IIS Express的应用程序URL和SSL端口等。
003.profiles属性说明:
- 该部分包含了多个配置文件,每个配置文件都对应一种启动或调试场景。
- 每个配置文件都包含以下关键属性:
commandName:指定启动命令的类型,如IISExpress或Project。launchBrowser:指定是否在启动应用程序时自动打开浏览器。applicationUrl:指定应用程序的URL,用于本地开发和调试。environmentVariables:定义了一组环境变量,这些变量可以在应用程序运行时被访问和使用。其中,ASPNETCORE_ENVIRONMENT是一个特别重要的环境变量,它用于指定应用程序的运行环境(如Development、Staging、Production)。
使用场景:
-
本地开发: 开发者在本地机器上使用Visual Studio或.NET Core CLI等工具开发和调试应用程序时,
launchSettings.json文件中的设置将被自动加载和应用。 - 通过修改这些设置,开发者可以轻松地调整应用程序的启动和调试行为,以满足不同的开发需求。 -
部署到生产环境: 需要注意的是,
launchSettings.json文件仅用于本地开发环境。当应用程序被部署到生产环境时,这些设置将不会被使用。 在生产环境中,应用程序的配置通常通过其他方式(如环境变量、配置文件等)进行管理
launchSettings.json文件属性总结:
launchSettings.json 文件通常包含两个主要部分:iisSettings 和 profiles
iisSettings 部分配置了IIS Express的匿名身份验证和应用程序URL。profiles 部分包含了两个配置文件:IIS Express 和 WebApplication1。每个配置文件都指定了不同的启动命令、是否打开浏览器、应用程序URL和环境变量。
Properties/launchSettings.json 文件是Asp.net Core Web项目中用于配置应用程序启动和调试设置的重要文件。通过修改该文件中的设置,开发者可以轻松地调整应用程序的启动和调试行为,以满足不同的开发需求。然而,需要注意的是,这些设置仅适用于本地开发环境,在部署到生产环境时不会被使用。
3)“.wwwroot”文件说明:
-
- 作用:存放静态文件(如CSS、JavaScript、图像等),这些文件可以通过浏览器直接访问。
- 访问方式:在浏览器中,这些文件可以通过相对于站点根目录的路径进行访问。
4)“依赖项”文件说明:
依赖项文件(主要是.csproj文件)起着至关重要的作用,它定义了项目所需的依赖项、框架和分析器等
5) "Pages"文件说明:
Index.cshtml 和 Index.cshtml.cs:
这是默认的主页。如果你的应用程序不需要主页,或者你想重新设计主页,可以删除或修改这些文件。
Privacy.cshtml 和 Privacy.cshtml.cs:
这些文件通常用于显示隐私政策页面。如果你的应用程序不需要隐私政策页面,可以删除这些文件。
Error.cshtml 和 Error.cshtml.cs:
这些文件用于显示错误页面。删除这些文件可能会导致应用程序在发生错误时显示默认的ASP.NET Core错误页面。如果你有自定义的错误处理机制,可以考虑删除这些文件。
Shared 目录:
这个目录通常包含共享的Razor组件,如布局文件(_Layout.cshtml)和部分视图(_ViewStart.cshtml, _ViewImports.cshtml)。删除这些文件可能会影响整个应用程序的布局和共享组件。 其他页面文件:
如果你的应用程序有其他页面文件(如About.cshtml,Contact.cshtml等),你可以根据应用程序的需求决定是否删除这些文件。
6)"appsettings.json" 文件说明: 用于存储应用程序的配置设置,可以包括数据库连接字符串,日志级别,第三方服务密匙等
{
"Logging:用于配置日志记录的级别"
"Logging": {
"`LogLevel` 指定不同类别的日志级别,如
`Default(默认的日志记录级别)`、
`Microsoft.Hosting.Lifetime(特别类别的日志记录级别)`"
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
日志级别说明
ASP.NET Core 支持以下日志级别(按严重性从低到高排列):
Trace: 用于记录最详细的消息,通常仅用于开发环境。Debug: 用于调试信息,比Trace级别稍低。Information: 用于记录应用程序的一般流程信息。Warning: 用于记录不正常或意外事件的信息,但不会导致应用程序停止。Error: 用于记录错误和异常,导致当前操作失败,但不会导致应用程序崩溃。
appsettings.Development.json 说明:
appsettings.Development.json 文件是 ASP.NET Core 应用程序在开发环境下的配置文件。它用于覆盖 appsettings.json 中的设置,以便在开发环境中提供更详细的错误信息和更详细的日志记录
{
"DetailedErrors": true,
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
etailedErrors是一个布尔值,设置为true表示在开发环境中启用详细的错误信息。- 当应用程序在开发环境中运行时,如果发生错误,将显示详细的异常信息,包括堆栈跟踪,以便开发者更容易调试和修复问题
7)"Program.cs"源码解析:
``
internal class Program { private static void Main(string[] args) { // 01 创建 WebApplication 构建器: /** * 创建WebApplication构建器: * 创建了一个 WebApplicationBuilder 实例 * 用于配置和构建 Web 应用程序。 **/ var builder = WebApplication.CreateBuilder(args);
//02 添加服务到容器
/**
* 向依赖注入容器中添加了 Razor Pages 服务。
* Razor Pages 是 ASP.NET Core 中的一种页面模型,
* 用于构建基于页面的应用程序
* **/
builder.Services.AddRazorPages();
//03 构建 WebApplication
// 使用构建器配置构建 Web 应用程序实例
var app = builder.Build();
// 04 配置 HTTP 请求管道
/**
* 检查当前环境是否不是开发环境。
* 如果不是开发环境,则配置异常处理和 HSTS(HTTP Strict Transport Security)。
app.UseExceptionHandler("/Error"): 配置异常处理程序,将错误重定向到 /Error 页面。
app.UseHsts(): 启用 HSTS,强制客户端使用 HTTPS 进行通信
* **/
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
// 05 使用 HTTPS 重定向
//启用 HTTPS 重定向中间件,将 HTTP 请求重定向到 HTTPS
app.UseHttpsRedirection();
// 06 配置静态文件
//启用静态文件中间件,允许应用程序提供
//静态文件(如 HTML、CSS、JavaScript 和图像文件)
app.UseStaticFiles();
// 07 配置路由
// 启用路由中间件,用于将请求路由到相应的处理程
app.UseRouting();
// 08 配置授权:
// 添加授权中间件,用于验证请求是否有权限访问受保护的资源
app.UseAuthorization();
// 09 配置 Razor Pages
// 配置应用程序以使用Razor页面
app.MapRazorPages();
// 10 运行应用程序
// 启动应用程序,开始监听和处理 HTTP 请求
app.Run();
}
} ``
8)删除多余页面,保留index并修改
Index.cshtml
@page
@using WebApplication1.Pages;
@model IndexModel
<div>
<h1>现在时间:@DateTime.Now</h1>
<div>
显示:@Model.Msg
</div>
</div>
Index.cshtml.cs
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApplication1.Pages
{
public class IndexModel : PageModel
{
public string Msg { set; get; }
public IndexModel()
{
// 在构造函数中初始化
Msg = "";
}
public void OnGet()
{
// 自定义
Msg = " Hello world";
}
}
}