.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阶段,还需进一步学习一下新特性。

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

相关推荐
IT大白鼠2 小时前
2026 年 9 月至今重大安全漏洞专题报告——微软产品高危漏洞深度解析
安全·microsoft
无风听海2 小时前
深入理解.NET中的 Lazy<T>
服务器·php·.net
开开心心_Every2 小时前
文件查重软件批量删除重复文件释放空间
java·开发语言·c#·计算机外设·ocr·excel·perl
波力海苔夹心脆6752 小时前
VisionPro 与 VisionMaster 对比(上):软件定位、开发环境与核心视觉工具对照
图像处理·算法·计算机视觉·c#·视觉检测·个人开发·vp9
海盗12342 小时前
微软技术日报 2026-10-14:十月补丁 1411 个漏洞,.NET 11 交出 RC2
人工智能·microsoft·机器人·aigc·.net
学以智用3 小时前
.NET WinForms / WPF / Blazor 模板详解
.net
Access开发易登软件3 小时前
我全新开发了一套 Access 通用 Excel 导入工具,现在开源了
数据库·microsoft·excel·mfc·vba·access·access开发
易点云徐源3 小时前
Microsoft Teams 桌面端黑屏与登录异常排查:账户会话和网络路径的影响
网络·microsoft
疯狂戴夫冒险4 小时前
歇一会 · 久坐休息提醒工具(番茄钟)工具分享
c#