.NET 11 Preview 6 来了!这次更新真不少
大家好!.NET 11 的第 6 个预览版发布了。离 11 月正式版越来越近,这个版本的新东西也越来越"能打"。先说结论:这个版本最大的看点是"异步验证"全家桶落地、union 联合类型开箱即用、还有默认开启的 CSRF 防护。下面挨个说。一、ASP.NET Core:Web 开发的更新最多1. 异步验证终于来了以前用 DataAnnotations 做验证,有个老大难问题:验证规则只能是同步的。想在验证时查个数据库(比如"这个邮箱是不是已经注册过了"),要么阻塞线程硬等,要么绕开验证体系自己写。现在好了,直接继承 AsyncValidationAttribute,实现 IsValidAsync 方法,就能在验证里放心地 await:publicsealedclassUniqueEmailAttribute:AsyncValidationAttribute{ protectedoverrideValidationResult? IsValid(object?value, ValidationContext context) = thrownewInvalidOperationException("请用 IsValidAsync 验证"); protectedoverrideasyncTaskValidationResult? IsValidAsync( object?value, ValidationContext context, CancellationToken cancellationToken) { varusers = context.GetRequiredServiceIUserService(); if(valueisstringemail awaitusers.EmailExistsAsync(email, cancellationToken)) { returnnewValidationResult("这个邮箱已经注册过了"); } returnValidationResult.Success; }}然后像普通验证特性一样,往属性上一贴 [UniqueEmail] 就行。如果验证逻辑涉及多个属性(比如"这个日期还有没有房"),可以让模型实现 IAsyncValidatableObject 接口。Minimal API 只要注册了 AddValidation(),框架会在进入接口之前自动帮你跑完这些异步验证。而且框架很聪明:能并行跑的验证器会并行跑,集合里的元素也是并行验证的,性能不吃亏