.NET 11 - 尝试一下Minimal API中的异步验证新特性

1. 简单介绍

.NET 11 RC2(Release Candidate 2)版本已经在2026-10-13这天发布了,这个版本仍然只支持在Visual Studio 2026 Insiders 和 Visual Studio Code(安装了C# Dev Kit.NET extension)中进行使用。同时.NET Conf 2026大会将会在2026年11月份举办(11/10-11/13),到时微软将会发布.NET11正式版,这是一个STS版本(Standard Term Support), 微软提供两年支持。

.NET11在Runtime, SDK, ASP.NET Core,MAUI以及WinForm等方面都有很多新特性发布。这边只简单尝试一下.NET 11 Minimal API的异步验证新特性。

2.准备阶段

假定已经安装好了Visual Studio 2026 Insiders和.NET 11 SDK,可以通过下方链接进行安装,

Visual Studio 2026 Insiders

.NET 11 Release Candidate 2

3. 异步验证

在Web应用程序中,经常会碰到需要异步验证的场景,比如用户注册时候的邮箱验证,问卷调查是否有重复提交等。既可以通过Javascript异步调用后端webapi进行验证,也可以在后端自定义Attribute的方式来验证的。在.NET 11 Minimal API中,微软也提供了两个Asynchronous DataAnnotations APIs,分别是AsyncValidationAttribute和IAsyncValidatableObject。我们可以继承AsyncValidationAttribute或者实现接口IAsyncValidatableObject来自定义验证逻辑。

3.1 创建应用程序

  1. 假定已经有一个UserService和IUserService,其中方法EmailExistsAsync用于验证邮箱的唯一性。方法中使用了Task.Delay,用来模拟对远程web api的调用。
  1. 创建一个自定义UniqueEmailAttribute,继承自AsyncValidationAttribute,同时重写一下抽象方法IsValidAsync,对于同步的抽象方法IsValid,直接抛出异常即可。

3)在IOC容器中注册一下UserService

  1. 添加一个类,在Email property上配置UniqueEmailAttribute,
  1. 配置validation中间件,同时创建端点(/register),如下图所示,

3.2 运行一下

  1. 使用dotnet run命令运行项目,打开swagger UI界面,
  1. 输入一个已经存在的email,然后点击Execute按钮,如下图所示,
  1. 最后返回了预期的异步验证错误信息,
  1. 如果输入一个不存在的email,则Minimal api返回200状态码

4. 其他

如果是实现接口IAsyncValidatableObject的方式来自定义异步验证逻辑,

则需要实现一下ValidateAsync方法,

5.总结

本文简单尝试了一下Minimal API的异步验证功能。当前.NET11已经进入Release Candidate 2阶段,还需进一步学习一下新特性。

本文如果哪里有错误,麻烦告之,谢谢谢谢!

相关推荐
暴走约伯7 小时前
【VFX工具链源码拆解 04】拯救丢失的绑定:Timeline 一键克隆与层级相对路径重映射算法
unity·c#·游戏引擎·硬件工程
1-1=08 小时前
C# 反射
c#·.net·.netcore
一叶星殇8 小时前
版本即契约:.NET 6 WebAPI 多版本治理与 Swagger 文档分治实践
mvc·.net
kk_net88998 小时前
微软常用运行库合集免费下载安装教程(附运行库安装包)微软运行库安装图文教程
其他·microsoft
Jeff-Tsai9 小时前
Day 9:数据与定义分家,表单不必各自建类型
.net·架构设计·erp·definition-driven
步步为营DotNet9 小时前
.NET 可观测性选型:Metrics、ActivitySource、EventSource 到底该用哪个
c#·.net·metrics·可观测性
CSharp精选营9 小时前
我把 Ant Design Blazor 翻了一遍:Blazor 中后台组件库到底能不能用
.net·blazor·ant design blazor·中后台系统·mudblazor
IT规划师9 小时前
Redis 数据类型全解 - ZSet:两个编码,七种玩法(五)
redis·.net
吃一碗粉只付一碗钱20 小时前
16-SqlSugar多库ConfigId与按实体选连接
sqlserver·c#
GlobalInfo20 小时前
2026年全球机器人用超平执行器市场研究报告:市场规模达7.51亿美元,人形机器人商业化与轻量化运动控制需求推动行业增长
大数据·人工智能·数码相机·microsoft·机器人