
【免费下载链接】autoskillsOne command. Your entire AI skill stack. Installed.项目地址https://gitcode.com/gh_mirrors/au/autoskills点击查看免费下载本指南以 autoskills 仓库中packages/autoskills/skills-registry/aspnet-core/references/testing-performance-and-operations.md为核心骨架系统梳理 ASP.NET Core 应用从分层测试、性能默认项、健康检查与可观测性到托管部署与运维防护的完整链路。读完本文你将掌握基于WebApplicationFactoryProgram的集成测试写法、内置缓存/压缩/限流等性能手段的取舍原则、liveness/readiness 健康检查的组织方式以及部署在反向代理或负载均衡后的转发头与安全配置要点并能在真实项目中直接落地。分层测试策略不要只依赖一种测试风格官方文档与 Skill 参考一致强调用分层测试取代单一测试风格让每一层测试负责自己最擅长的验证范围单元测试unit tests针对纯服务与业务逻辑隔离外部依赖验证单一行为单元集成测试integration tests覆盖请求管线、依赖注入、数据库、认证与框架装配wiring验证组件之间的真实协作浏览器测试browser tests用于端到端用户流程验证真实用户在浏览器中的完整路径。三层各有分工单元测试跑得快、定位精准但无法捕捉框架装配错误集成测试贴近真实运行环境能暴露 DI 注册错误、认证中间件顺序等问题浏览器测试则最接近真实用户体验但成本最高、最慢。实践中应按“单元测试为主体、集成测试做关键路径覆盖、浏览器测试保核心用户流程”的比例分配。Skill 的路由表references/_sections.md也把这条链路固化成了推荐阅读顺序新应用或重大重构按stack-selection.md → program-and-pipeline.md → 主应用模型参考 → security-and-identity.md → testing-performance-and-operations.md推进测试与运维始终是应用开发收尾前必读的一环。集成测试WebApplicationFactory 与测试主机集成测试的标准入口是Microsoft.AspNetCore.Mvc.Testing包提供的WebApplicationFactoryProgram。它会在内存中启动应用的完整主机test host让你的测试代码通过HttpClient像真实客户端一样发起请求。来自官方文档的核心指导使用测试主机与HttpClient测试通过factory.CreateClient()获取客户端请求走完整中间件管线用测试替身替换服务当外部依赖如第三方 API、邮件服务不适合在测试中出现时可在 factory 中覆盖服务注册例如builder.ConfigureServices(...)中替换实现控制重定向以断言认证行为断言未认证访问是否跳转登录页时需要配置HttpClient不自动跟随重定向AllowAutoRedirect false否则你只会看到最终页而非 401/302 本身正确处理表单提交的反伪造antiforgery表单 POST 需要先获取 antiforgery token 再携带提交集成测试中要显式处理这一环节否则请求会被 400 拒绝数据库测试优先 SQLite 内存模式相比 EF Core 的 InMemory 提供程序SQLite in-memory 更接近真实关系数据库的行为约束、事务、类型转换能提供更可信的数据库集成测试。对于 SPA 或浏览器驱动场景微软推荐使用 .NET 侧的浏览器自动化工具如 Playwright for .NET而不是在单元测试里模拟浏览器行为。这与本 Skill 强调的“浏览器测试独立分层”一致——浏览器自动化覆盖端到端用户流程集成测试专注服务端管线。性能默认项先用内置能力再谈自定义优化ASP.NET Core 的性能优化有一条重要原则先使用框架内置功能不要过早自建优化层。Skill 默认操作假设见 SKILL.md也明确要求“优先使用内置 DI、options/configuration、logging、ProblemDetails、OpenAPI、health checks、rate limiting、output caching 和 Identity再考虑第三方基础设施”。优先启用的内置性能手段输出缓存output caching按路由/端点级别缓存完整响应适合响应内容变化不频繁的 GET 场景响应缓存response caching通过ResponseCachingMiddleware与[ResponseCache]特性设置 HTTP 缓存语义让客户端/中间代理参与缓存响应压缩response compressionAddResponseCompression()配合 Brotli/Gzip显著降低文本类响应体积HTTP 请求超时HTTP request timeouts为出站与入站请求设置合理超时避免热点路径被慢依赖拖死速率限制rate limitingAddRateLimiter()提供固定窗口、滑动窗口、令牌桶、并发等策略保护端点免受突发流量冲击静态文件处理static file handlingUseStaticFiles()正确托管wwwroot中的公开资源必要时配置缓存头。通用的性能指导原则先测量再优化没有基线数据的优化都是猜测让数据库与网络往返可见避免隐式 N1 查询与隐藏的外部调用减小载荷体积只返回客户端真正需要的字段大数据量使用流式传输或分页不要一次性把海量数据塞进内存热点路径杜绝同步阻塞避免在线程池线程上做同步 I/O、锁竞争或长时间 CPU 空转。配合 references/data-state-and-services.md 的建议出站 HTTP 应统一走IHttpClientFactorynamed client 区分外部系统、typed client 做富集成、delegating handler 承担重试/header/遥测避免在请求处理器里散落new HttpClient()缓存数据必须能从持久源重新推导且当应用扩到多实例时要重新审视内存缓存与单例状态。健康检查与可观测性健康检查health checks是运维的地基。官方与 Skill 的建议是为在运维层面真正重要的依赖添加健康检查而不是为每个组件机械地加一个。当需要区分不同健康面时使用独立检查或标签tagsliveness存活进程是否活着、能否响应基础请求readiness就绪应用是否准备好接收流量数据库是否可用、依赖是否就绪依赖特定健康面dependency-specific为数据库、缓存、消息队列、外部 API 等关键依赖分别暴露健康状态便于定位故障点。在 Kubernetes 等容器编排环境中liveness 探针与 readiness 探针通常分别指向不同的健康检查端点或带不同标签的检查组确保“活着但未就绪”与“彻底宕机”能被正确区分。可观测性三件套同样不可缺结构化日志structured logs使用ILoggerT记录结构化值而非拼接字符串——references/program-and-pipeline.md 明确要求“日志记录结构化值不要拼接字符串”并把关联 IDcorrelation与请求诊断放在中间件或基础设施层而非业务逻辑中请求追踪request tracing在适用场景接入分布式追踪串联跨服务调用链关键路径指标metrics至少覆盖认证auth、API 延迟API latency与后台任务background work。ASP.NET Core 10 还提供了 Identity 指标用于观察认证相关行为见 references/security-and-identity.md适合有真实认证流量或安全监控需求的应用。托管与部署从 dotnet publish 到反向代理典型的部署流程分为四步dotnet publish生成可部署的发布输出自包含或框架依赖视环境而定部署发布输出将 publish 目录复制到目标机器或镜像在进程管理器后运行用 systemd、supervisor 等守护进程确保崩溃自动重启环境需要时在应用前放置反向代理Kestrel 通常不直接暴露给公网由 Nginx、IIS、YARP 等承担 TLS 终止、负载均衡与请求转发。部署时要明确目标环境WindowsIIS 或 Windows Service 托管LinuxKestrel Nginx或其他反向代理容器平台按平台预期做容器化托管。Skill 的 references/source-map.md 也把“Servers, Host and deploy”与“Performance”两个官方文档区映射到了本参考文件说明托管部署正是这个 Skill 参考的核心覆盖域之一。代理背后的转发头配置位于代理或负载均衡之后时应用无法直接看到客户端真实的 scheme、host 与远程 IP必须配置转发头forwarded headers。关键要点启用ForwardedHeadersMiddlewareapp.UseForwardedHeaders()并配置ForwardedHeaders.XForwardedFor | XForwardedProto等验证 scheme、host 与远程 IP 行为HTTPS 重定向、链接生成、日志中的客户端 IP 都依赖正确的转发头在部署拓扑中测试认证重定向与回调 URL如果配置错误认证回调 URL 会生成错误的 scheme/host导致登录跳转失败。这一点与中间件顺序强相关references/program-and-pipeline.md 推荐的中间件顺序中转发头处理必须排在认证、重定向与链接生成之前——否则应用会在未修正 scheme 的情况下评估链接与安全行为产生错误结果。安全参考 references/security-and-identity.md 同样强调“在代理头被处理之前不要生成链接或评估 scheme 敏感行为”。运维防护清单Operational Safeguards最后是生产环境必须守住的四条底线为数据库与关键外部服务添加健康检查让探针与告警能真实反映依赖状态而不是只看进程存活在可能处对无效配置快速失败fail fast在启动阶段就验证配置options 验证不要带着错误配置运行到运行时才炸。这与 references/data-state-and-services.md 的“尽早验证 options坏配置应快速失败”一致也与 ASP.NET Core 9 起开发环境下默认启用ValidateOnBuild/ValidateScopes的行为相呼应见 references/versioning-and-upgrades.md让机密信息远离发布产物开发环境用 Secret Manager生产环境用安全的密钥存储如 Azure Key Vault、云厂商 Secret 服务绝不把生产凭据提交进源码或明文配置文件多实例部署中确保数据保护密钥持久化DataProtection密钥必须存放到所有实例共享的持久化位置如数据库、共享存储否则负载均衡后的多个实例无法解密彼此的 cookie/token导致认证随机失效。与 Skill 参考体系的衔接本文内容是 autoskills 中aspnet-coreSkill 的横切参考之一。在 Skill 的阅读体系中见 SKILL.md本主题对应第 5 步“按需加载横切参考”中的references/testing-performance-and-operations.md与安全security-and-identity.md、数据与状态data-state-and-services.md、版本升级versioning-and-upgrades.md共同构成生产级 ASP.NET Core 应用的完整闭环。按官方文档树映射references/source-map.md“Test/Debug/Troubleshoot”“Servers/Host and deploy”“Performance”三大官方区域都由本参考承接。实际应用中请遵循 Skill 的执行注记先确认目标框架与 SDK新生产应用优先net10.0再用本文的测试与部署清单逐项核对当任务依赖较窄的平台细节或版本特定行为时再回到 Microsoft Learn 的对应文章核实避免凭记忆使用过时或预览版 API。赞分享【免费下载链接】autoskillsOne command. Your entire AI skill stack. Installed.项目地址https://gitcode.com/gh_mirrors/au/autoskills点击查看免费下载相关推荐如何快速解决ASP.NET Core JSON性能回归问题完整优化指南如何快速解决ASP.NET Core JSON性能回归问题完整优化指南 ASP.NET Core作为.NET生态系统中构建高性能Web应用的核心框架其JSO后端Web框架ASP.NET Core Routing 性能基准测试运行指南基于 dotnet/aspnetcore 仓库的 Microbenchmarks 实战ASP.NET Core Routing 性能基准测试运行指南基于 dotnet/aspnetcore 仓库的 Microbenchmarks 实战 导读 本后端Web框架ASP.NET Core 性能基准测试实战在官方性能实验室用 Crank CLI 与 PR Bot 验证代码改动ASP.NET Core 性能基准测试实战在官方性能实验室用 Crank CLI 与 PR Bot 验证代码改动 本文以 ASP.NET Core 仓库中的官后端Web框架上一篇华硕笔记本终极控制方案GHelper轻量级性能管理工具完整指南下一篇你的EVE舰船实验室用Pyfa打造完美配置的3步进阶法创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考