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,可以通过下方链接进行安装,
3. 异步验证
在Web应用程序中,经常会碰到需要异步验证的场景,比如用户注册时候的邮箱验证,问卷调查是否有重复提交等。既可以通过Javascript异步调用后端webapi进行验证,也可以在后端自定义Attribute的方式来验证的。在.NET 11 Minimal API中,微软也提供了两个Asynchronous DataAnnotations APIs,分别是AsyncValidationAttribute和IAsyncValidatableObject。我们可以继承AsyncValidationAttribute或者实现接口IAsyncValidatableObject来自定义验证逻辑。
3.1 创建应用程序
- 假定已经有一个UserService和IUserService,其中方法EmailExistsAsync用于验证邮箱的唯一性。方法中使用了Task.Delay,用来模拟对远程web api的调用。

- 创建一个自定义UniqueEmailAttribute,继承自AsyncValidationAttribute,同时重写一下抽象方法IsValidAsync,对于同步的抽象方法IsValid,直接抛出异常即可。

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

- 添加一个类,在Email property上配置UniqueEmailAttribute,

- 配置validation中间件,同时创建端点(/register),如下图所示,

3.2 运行一下
- 使用dotnet run命令运行项目,打开swagger UI界面,

- 输入一个已经存在的email,然后点击Execute按钮,如下图所示,

- 最后返回了预期的异步验证错误信息,

- 如果输入一个不存在的email,则Minimal api返回200状态码

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

则需要实现一下ValidateAsync方法,

5.总结
本文简单尝试了一下Minimal API的异步验证功能。当前.NET11已经进入Release Candidate 2阶段,还需进一步学习一下新特性。
本文如果哪里有错误,麻烦告之,谢谢谢谢!