Web API 有基类+多子类的继承体系(如 ReviewBase 派生 Excel/TXT/Database 三种导入请求),Swagger 默认只展示基类导致前端看不到子类字段。本文介绍用 System.Text.Json 的 JsonPolymorphic + JsonDerivedType 特性让运行时支持多态,再配合 Swashbuckle 的 UseOneOfForPolymorphism 自动生成 OpenAPI oneOf Schema,以及手动 DocumentFilter 和自定义 OperationFilter 两种备用方案,让 Swagger UI 直接展示子类下拉选择。
标签: #HTTP管道
本文基于 SwitchData 项目的实际代码,完整展示 ASP.NET Core 过滤器(Filter)体系的工程实践:用 IAsyncActionFilter 实现接口操作日志(反射读取 DisplayAttribute、敏感参数脱敏、Fire-and-forget 异步写库),用 NoPermissionAttribute + PermissionAttribute 双层拦截实现权限管控,以及通过自定义 IFilterProvider 动态注入过滤器。适合希望深入理解 ASP.NET Core 管道模型的开发者。
ASP.NET Core 默认使用 System.Text.Json 做 JSON 序列化,但日期格式化、字符串 Trim、DataTable 桥接这些常见需求需要自己实现 Converter。本文基于 SwitchData 项目,从 DateTimeJsonConverter、TrimStringJsonConverter 到 DataTableJsonConverter,再到 JsonConverterFactory 消除重复、JsonHelper 统一双序列化器入口,手把手实现一套完整的自定义 Converter 体系。
本文从 SwitchData 项目提取 DisplayLoggingMiddleware,讲解如何在 ASP.NET Core 中手写请求日志中间件,实现接口耗时统计、状态码分级日志与异常追踪。通过 Endpoint 元数据读取菜单名称、Stopwatch 精确计时、静态文件过滤等技巧,不到 70 行代码即可构建生产级请求监控能力。
在对外提供 OpenAPI 时,仅靠账号密码远远不够。本文从 SwitchData 项目真实代码出发,详解基于 userId+timestamp+secret 的 MD5 签名方案:包含签名头字段、5 分钟重放窗口、类型化 Filter 注册、AllowAnonymous 跳过、签名生成与校验、日志记录等,读完可直接套用到你自己的 API 接口安全上。
讲解如何通过 IStartupFilter 在 ASP.NET Core 启动阶段自动包装中间件管道,实现框架级自动注入(如预热、健康检查、统一前处理),而无需用户显式调用 UseXxx。
1 / 1