本文章翻译自微软官方文档: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/?view=aspnetcore-7.0&tabs=windows
目录
ASP.NET Core基础知识概述(一)
ASP.NET Core基础知识概述(二)
ASP.NET Core基础知识概述(三)
路由(Routing)
路由是映射到处理程序的URL模式。处理程序可以是一个典型的Razor页面、一个MVC控制器中的action方法,或者是一个中间件。可以通过ASP.NET Core路由对应用程序的url控制。一下是由ASP.NET Core web应用程序模板生成的代码,调用了UseRouting方法:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
错误处理(Error handling)
ASP.NET Core有内置的错误处理功能,比如:
- A developer exception page(开发人员异常页)
- Custom error pages(自定义错误页)
- Static status code pages(静态状态代码页)
- Startup exception handling(启动异常处理)
发起HTTP请求(Make HTTP requests)
IHttpClientFactory的其中一个作用是生成HttpClient实例,工厂可以:
- 提供一个中心位置,用于命名和配置合理的 HttpClient 实例。比如,注册并配配置一个人用于访问GitHub的 github 客户端。注册并配置默认客户端以实现其他目的。
- 支持注册并链接多委托处理程序并生成出站请求中间件管道。这种模式非常类似于ASP.NET Core的中间件请求管道。这种模式提供了一个用于管理HTTP请求切面相关的机制,包括缓存、异常处理、序列化和日志记录。
- 可以集成一个非诚流行的用于瞬时错误处理的第三方库。
- 管理基础 HttpClientHandler 实例的池和生存期,避免手动管理 HttpClient 生存期时可能出现的常见 DNS 问题。
- 通过 ILogger 添加可配置的日志记录体验,用于记录通过工厂创建的客户端发送的所有请求。
Content root
content root是以下内容的基路径:
- 托管应用的可执行文件 (.exe)。
- 构成应用程序的已编译程序集 (.dll)。
- 应用使用的内容文件,例如:
- Razor 文件(.cshtml、.razor)
- 配置文件(.json、.xml)
- 数据文件 (.db)
- Web 根目录,通常是 wwwroot 文件夹。
在开发中,content root默认是项目的根目录。此目录还是应用内容文件和 Web 根目录的基路径。 在构建主机时设置路径,可指定不同的内容根目录。
Web root
Web root是公用静态资源文件的基路径,例如:
- Stylesheets (.css)
- JavaScript (.js)
- Images (.png, .jpg)
默认情况下,静态文件仅从 Web 根目录及其子目录提供。Web root路径默认为 {content root}/wwwroot。 在构建主机时设置路径,可指定不同的 Web root。
防止使用项目文件中的 <Content> 项目项在 wwwroot 中发布文件。 下面的示例会阻止在 wwwroot/local 及其子目录中发布内容:
<ItemGroup>
<Content Update="wwwroot\local\**\*.*" CopyToPublishDirectory="Never" />
</ItemGroup>
在 Razor.cshtml 文件中,~/ 指向 Web 根。 以 ~/ 开头的路径称为虚拟路径。