DotNet5.0 距今发布已有月余,就在昨天2021年1月12日,又再一次发布了小版本v5.0.2的安全更新。至此,应该说已经相对稳定了,可以实施更新尝尝鲜了。今天就先来检视一遍,DotNet 5.0究竟完成了哪些更新功能。应该有不少同学已经在第一时间就尝试过了吧,还请留言提出你宝贵的心得和经验。
一、ASP.NET Core MVC 和 Razor 改进
1.新增支持通过模型绑定将日期/时间绑定到 UTC
模型绑定现在支持将 UTC 时间字符串绑定到 DateTime
。 如果请求包含 UTC 时间字符串,则模型绑定会将其绑定到 UTC DateTime
。 例如,以下时间字符串会绑定到 UTC DateTime
:https://example.com/mycontroller/myaction?time=2019-06-14T02%3A30%3A04.0576719Z
2.新增支持模型绑定和验证与 C# 9 记录类型一起使用
C# 9 记录类型(record)可以与 MVC 控制器或 Razor 页面中的模型绑定一起使用。 记录类型是为通过网络传输的数据建模的好方法。
例如,以下是在 PersonController
将 Person
记录类型与模型绑定一起使用:
//这是一个Person的记录类型
public record Person([Required] string Name, [Range(0, 150)] int Age);
public class PersonController
{
public IActionResult Index() => View();
//在控制其方法中可以直接使用记录进行模型绑定
[HttpPost]
public IActionResult Index(Person person)
{
// ...
}
}
还可以将记录应用于窗体视图中,在窗体视图中的模型验证方法如下:
@model Person
Name: <input asp-for="Model.Name" />
<span asp-validation-for="Model.Name" />
Age: <input asp-for="Model.Age" />
<span asp-validation-for="Model.Age" />
二、WebApi方面的更新
1.默认开启了OpenAPI 规范,默认支持Api文档生成
OpenAPI 规范是一种行业标准,用于描述 HTTP API 并将其集成到复杂的业务流程中或与第三方集成。 OpenAPI 受到所有云提供程序和许多 API 注册表的广泛支持。 从 Web API 发出 OpenAPI 文档的应用具有各种可使用这些 API 的新机会。 与开放源代码项目 Swashbuckle.AspNetCore 的维护人员合作,ASP.NET Core API 模板包含对 Swashbuckle 的 NuGet 依赖关系。 Swashbuckle 是一个常用的开放源代码 NuGet 包,可动态发出 OpenAPI 文档。 Swashbuckle 通过 API 控制器进行自检并在运行时或在生成时使用 Swashbuckle CLI 生成 OpenAPI 文档来实现此目的。
在 ASP.NET Core 5.0 中,Web API 模板默认启用 OpenAPI 支持。 若要禁用默认 OpenAPI,请执行以下操作:
通过命令行方法是:
dotnet new webapi --no-openapi true
通过 Visual Studio 设置方法是:
取消选中“启用 OpenAPI 支持”。如图:

开启OpenApi支持的新项目,会有以下3个地方的变化:
1.为 Web API 项目创建的所有 .csproj 文件都包含 Swashbuckle.AspNetCore NuGet 包引用。
<ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
</ItemGroup>
2. 模板生成的代码在 Startup.ConfigureServices
中包含用于激活 OpenAPI 文档生成的代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApp1", Version = "v1" });
});
}
3. 在Startup文件的Configure方法中
Startup.Configure
方法将添加 Swashbuckle 中间件,这将启用:
- 文档生成过程。
- 在开发模式下默认为 Swagger UI 页。
在发布到生产环境时,模板生成的代码不会意外公开 API 的说明。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json",
"WebApp1 v1"));
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
2. 新增有关Azure API 管理导入
ASP.NET Core API 项目启用 OpenAPI 时,Visual Studio 2019 版本 16.8 及更高版本将在发布流程中自动提供额外的步骤。 使用 Azure API 管理的开发人员有机会在发布流程中自动将 API 导入到 Azure API 管理:

3. Web API 项目启动直接进入Swagger UI 文档界面
如果默认启用了 OpenAPI,则显著改进了 Web API 开发人员的应用启动体验 (F5)。 借助 ASP.NET Core 5.0,Web API 模板会预先配置为加载 Swagger UI 页。 Swagger UI 页提供为已发布的 API 添加的文档,并且单击一次即可测试 API。

三、API 改进
1.用于 HttpRequest 和 HttpResponse 的 JSON 扩展方法
可以使用新的 ReadFromJsonAsync 和 WriteAsJsonAsync
扩展方法从 HttpRequest
和 HttpResponse
读取和写入 JSON 数据。 这些扩展方法使用 System.Text.Json 序列化程序来处理 JSON 数据。 新的 HasJsonContentType
扩展方法还可以检查请求是否具有 JSON 内容类型。
JSON 扩展方法可与终结点路由结合使用,以编程方式创建 JSON API,我们称之为“路由到代码”*_。 这是一个新选项,适用于想要以轻量级方式创建基本 JSON API 的开发人员。 例如,只有少量终结点的 Web 应用可能选择使用路由到代码,而不是 ASP.NET Core MVC 的全部功能:

0 Responses to “ASP.NET Core 5.0 DotNet5 新增功能总结之有关Web项目(MVC与WebApi)的更新内容”