01 ASP.NET Core Web项目创建并运行,文件解析

317 阅读7分钟

1) 创建ASP.NET Core Web项目

image.png

2) 在本地使用IIS Express运行该项目:

image.png

3) Asp.net core Web项目结构说明:

image.png

(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. 好处:
  1. 验证:大多数现代代码编辑器和IDE(如Visual Studio、Visual Studio Code等)都支持JSON Schema验证。当$schema属性被指定时,编辑器会使用该URL指向的JSON Schema文件来验证launchSettings.json文件的内容。这有助于在编写配置文件时捕获错误,比如拼写错误、缺少必需的属性或提供了不支持的属性等。
  2. 智能感知:一些编辑器还利用JSON Schema来提供智能感知功能,比如自动完成、悬停提示和文档注释等。这可以极大地提高编写配置文件的效率和准确性。
  3. 文档化:JSON Schema文件本身也是一种文档形式,它详细描述了配置文件的每个属性和可能的值。这对于理解配置文件的结构和用途非常有帮助。
002.iisSettings 属性说明:

该部分定义了与IIS Express相关的设置,包括是否启用Windows身份验证、匿名身份验证,以及IIS Express的应用程序URL和SSL端口等。

003.profiles属性说明:
  • 该部分包含了多个配置文件,每个配置文件都对应一种启动或调试场景。
  • 每个配置文件都包含以下关键属性:
    • commandName:指定启动命令的类型,如 IISExpress 或 Project
    • launchBrowser:指定是否在启动应用程序时自动打开浏览器。
    • applicationUrl:指定应用程序的URL,用于本地开发和调试。
    • environmentVariables:定义了一组环境变量,这些变量可以在应用程序运行时被访问和使用。其中,ASPNETCORE_ENVIRONMENT 是一个特别重要的环境变量,它用于指定应用程序的运行环境(如 DevelopmentStagingProduction)。
使用场景:
  1. 本地开发: 开发者在本地机器上使用Visual Studio或.NET Core CLI等工具开发和调试应用程序时,launchSettings.json 文件中的设置将被自动加载和应用。 - 通过修改这些设置,开发者可以轻松地调整应用程序的启动和调试行为,以满足不同的开发需求。

  2. 部署到生产环境: 需要注意的是,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.cshtmlIndex.cshtml.cs: 这是默认的主页。如果你的应用程序不需要主页,或者你想重新设计主页,可以删除或修改这些文件。

Privacy.cshtml Privacy.cshtml.cs: 这些文件通常用于显示隐私政策页面。如果你的应用程序不需要隐私政策页面,可以删除这些文件。

Error.cshtmlError.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";
        }
    }
}