乐于分享
好东西不私藏

ASP.NET Core 10.0 源码深度拆解 — 第 1 篇 开篇奠基:吃透框架底层,从设计理念与启动流程说起

ASP.NET Core 10.0 源码深度拆解 — 第 1 篇 开篇奠基:吃透框架底层,从设计理念与启动流程说起

写在前面:你的痛点,我都经历过

下面这些场景,你是不是也遇到过:

  • 项目里 Controller、中间件、依赖注入用得很溜,但面试被问"ASP.NET Core 启动到底干了什么",脑子里只有 var app = WebApplication.CreateBuilder(args) 一行代码。
  • 想自己定制一个中间件,写着写着发现行为不对,翻官方文档也找不到原因——底层机制不懂,排错全靠猜。
  • 看同事改 Startup 配管道、调 IOC 注册、玩 Kestrel 配置,你只能默默记下步骤,却不知道为什么这么写。
  • GitHub 上开源项目一堆自定义扩展,你看得云里雾里——因为框架原理没吃透,读别人代码就是寸步难行。
如果你中了 2 条以上,那这篇文章就是为你写的。

一、ASP.NET Core 10 设计哲学:从分裂到统一

在拆源码之前,一定要先理解一件事:ASP.NET Core 不是什么全新框架,它是一次"大一统"的胜利。

1.1 版本迭代节奏:一年一大版本,两年一 LTS

.NET 团队有着非常清晰的发布节奏(从 Build 2019 正式确定至今):

类型
全称
支持周期
LTS
Long Term Support
36 个月(生产环境首选)
STS
Standard Term Support
18 个月(尝鲜/过渡)
GA
General Availability
正式发布版

发布节奏上,微软保持了 每年一个大版本、每月一个 Preview 的稳定节奏。从 .NET 5 开始,奇数版本通常为 STS(如 .NET 7),偶数版本通常为 LTS(如 .NET 6、.NET 8、.NET 10)。ASP.NET Core 10.0 继承这一节奏,作为 LTS 版本更是生产级首选。

如果你是面试候选人或团队技术负责人,把版本发布策略讲清楚,是非常加分的框架级认知。

1.2 .NET Framework 时代:Windows 的"孤岛"

回到 .NET Framework 时代,整个技术栈长这样:

核心矛盾: BCL 只有一套,CLR 只有一个,全部强绑定 Windows。微软的"跨平台"梦想在那个时候根本无法落地。

1.3 .NET Core 时代:三条分支并行的"过渡期"

2016 年,.NET Core 1.0 诞生。这是一个历史性的转折——但也带来了新的问题:

  • .NET Framework
    :传统 Windows 应用继续维护(止于 4.8.x)
  • .NET Core
    :全新的跨平台分支,独立演进
  • Mono / Xamarin
    :移动端和 Linux 的另一条线

到 .NET Core 3.1(终点站),你会发现一个尴尬的事实:三个 CLR 并存,三套 BCL 各有差异,开发者不知道该学哪个。

整个 .NET 生态是"三足鼎立"的分裂状态。

1.4 .NET 5/6/7 → .NET 10:统一后的持续进化

2020 年 .NET 5 发布,微软做了一件最正确的事:终结三条分支,推出 Unified 统一平台。

这一系列版本一脉相承,核心哲学从未改变:一个 CLR(CoreCLR)、一套 BCL、真正的跨平台。

1.5 跨平台的本质:CoreCLR

所谓"跨平台",不是写一个 #if WINDOWS 的宏就完事了。根本在于:

CoreCLR(运行时)本身被设计为跨操作系统的执行引擎。

它能在 Windows、Linux、macOS 上运行,依赖的是:

  • JIT 编译器的平台适配层
    (RyuJIT 针对不同 CPU 架构优化)
  • 统一的 GC 垃圾回收器
    (跨平台的内存管理策略)
  • 抽象化的操作系统接口
    (文件系统、网络、线程等底层 API 的跨平台包装)

理解跨平台本质,是你理解 ASP.NET Core 10 一切设计决策的根基。包括后面你会看到的——Kestrel 作为跨平台 Web 服务器替代 IIS Express,正是这一哲学在应用框架层的体现。

二、源码学习方法论:别一上来就啃代码

2.1 错误姿势 vs 正确姿势

很多同学拿到源码的第一反应是:从 Main 函数一行一行往里跟,结果三天后放弃了。

为什么?因为 ASP.NET Core 源码不是一个直线逻辑,它是高度抽象 + 设计模式 + 职责链的复杂组合体。没有上帝视角,你会迷失在细节的海洋里。

2.2 高效读源码四步法

这是整个专栏系列推荐的核心学习路径——

第一步:先会使用

在你开始读源码之前,确保你对这个模块的基本 API 有使用经验。比如:

  • 用过 WebApplication.CreateBuilder(args) 创建过项目
  • 写过自定义中间件(app.Use(...)
  • 注册过 IOC 服务(builder.Services.AddSingleton(...)
  • 了解 MVC 路由和控制器的基本配置

这一步让你知道"代码在解决什么问题"。

第二步:上帝视角,自上而下

不要从 Main 一行行往下读,而是先梳理整体结构图。比如:

  • 启动流程分哪几大块?
  • 请求响应链路经过哪些关键节点?
  • 核心对象之间的依赖关系是什么?

就像看地图——先知道城市在哪里,再去逛街道。

第三步:精读核心源码

有了整体认知之后,再深入到关键模块——但依然是"只读核心":

  • 望文生义:方法名、类名往往是自解释的,能猜出用途就先跳过
  • 该过的过:非核心路径的实现细节,标记 TODO 后续再看
  • 理解设计模式:ASP.NET Core 大量使用 建造者模式、管道模式、适配器模式,抓到这些,事半功倍

第四步:扩展与应用

读源码的终极目标不是"看懂",而是用出来

  • 根据理解写出定制化扩展(自定义中间件、自定义 IOC 注入策略)
  • 手写一个"简易版框架"来验证核心流程
  • 在项目中应用你的理解做出更优的架构决策

整个专栏 10 篇,就是按这四步法结构来组织的。

2.3 阅读源码的核心目标

读完源码,你应该达到四个层次:

  1. 梳理完整流程
    :能用文字或图表讲清楚启动流程、请求响应流程的每一步
  2. 理解核心对象
    WebApplicationBuilderWebApplicationIServiceCollectionIApplicationBuilder 等核心类型各司其职
  3. 手写常用扩展
    :能写出生产级可用的中间件、过滤器、模型绑定器
  4. 掌握框架心法
    :理解框架设计的取舍和意图,具备架构评审能力

三、实操:源码编译与调试环境搭建

光说不练假把式。要真正吃透源码,必须能单步调试

3.1 拉取源码

ASP.NET Core 源码托管在 GitHub,可以直接 clone:

git clone https://github.com/dotnet/aspnetcore.git
注意:这里拉取的是 ASP.NET Core 框架源码,包含 Kestrel、MVC、路由、中间件等,不包含 Runtime 源码(CLR、GC、JIT 等),Runtime 源码需要单独获取。不过对于应用框架层的学习,这已经完全够用了。

3.2 编译与启动

进入源码目录后:

cd aspiree/src/Mvcstartvs.cmd
执行 startvs.cmd 会自动启动 Visual Studio 2026,加载整个 MVC 相关解决方案。

3.3 使用 MvcSandbox 调试

源码中自带 sample/MvcSandbox 项目,这是一个最小化的示例项目,专门用来做调试入口:

  • 将 MvcSandbox 设为启动项目
  • 在关键位置打断点(比如 WebApplication.CreateBuilder 内部)
  • F5 启动调试
你可以亲眼看到启动流程的每一个步骤被执行,这种体验比看十篇博客都管用。

四、上帝视角:两大核心运行链路

现在我们站到上帝视角,俯瞰 ASP.NET Core 10 的全部运行流程。

ASP.NET Core 10 的整个生命周期,本质上由 两条链路 组成:

链路一:启动流程

程序启动时执行的初始化操作序列:

启动流程:程序启动时,执行的一系列操作---初始化配置文件、初始化日志、IOC容器的初始化、各种IOC注册、MVC相关的IOC注册、Kestrel服务器初始化、HttpPipeline 的初始化

这一步完成之后,应用程序处于"待命"状态——所有服务准备就绪,管道搭建完成,只等请求到来。

链路二:请求响应流程

当 HTTP 请求到达时执行的响应链路:

响应流程:请求来了,执行的一系列操作---Kestrel监听到HttpRequest,解析成 HttpContext---交给HttpPipeline 来处理---路由匹配、鉴权授权、控制器-ActionView—Filter---响应回发和资源释放

启动流程决定"框架有什么能力",请求响应流程决定"框架如何服务请求"。

两条链路如同框架的"骨架"和"血液"——理解了它们,你就掌握了 ASP.NET Core 10 的底层全景图。

五、启动流程六步拆解(核心重点)

启动流程是本篇的核心。我们将 WebApplication.CreateBuilder(args) 到 app.Run() 之间发生的一切,拆解为 六大步骤

Step 1:创建 WebApplicationBuilder——信息采集

var builder = WebApplication.CreateBuilder(args);

这一步看似简单,实则做了大量"前置信息采集"工作:

  • 读取命令行参数
    args):收集启动时传入的 --urls--environment 等参数
  • 读取环境变量
    ASPNETCORE_ENVIRONMENT、日志级别配置等
  • 读取配置文件
    appsettings.jsonappsettings.{Environment}.json 等
  • 初始化 Host 构建器
    :确定应用是 Web Host 还是通用 Host

形象理解:Step 1 就像你搬家前的"踩点"——先把新房的户型图、水电接口、周边信息全部搞清楚。

Step 2:配置 Builder——装配初始化

builder.Configuration.AddJsonFile("custom.json");builder.Logging.AddConsole();builder.Services.AddControllers();

在获得 WebApplicationBuilder 实例后,进行各种初始化配置:

  • 配置系统
    :追加自定义配置文件、配置源(环境变量、命令行、内存配置等)
  • 日志系统
    :注册日志提供程序(Console、Debug、EventLog 等)
  • 服务注册准备
    :为后续 IOC 批量注册打基础

形象理解:设计图拿到了,现在开始规划每个房间放什么家具。

Step 3:IOC 批量注册——服务清单

builder.Services.AddDbContext<AppDbContext>();builder.Services.AddScoped<IUserService, UserService>();builder.Services.AddControllersWithViews();  // 触发 MVC 相关 IOC 注册

这是整个启动流程中"最庞大"的一步。调用 AddControllersWithViews() 这样的扩展方法时,背后实际触发了数十个服务的链式注册

  • MVC 核心服务(IActionInvokerProviderIControllerFactory 等)
  • 模型绑定服务(IModelBinderProvider
  • 视图引擎服务(IViewEngine
  • 路由服务(EndpointRouting 相关组件)
  • 过滤器提供程序(IFilterProvider

这就是 IOC 容器的威力——所有依赖关系在启动时注册完毕,运行时通过依赖注入自动装配。

形象理解:列一张"搬家清单",每件家具、电器、日用品都在清单上,等到了新家直接按清单摆放。

Step 4:Build()——实例化 IOC 容器

var app = builder.Build();

这是关键一步:调用 Build() 将前面所有配置"固化"为运行时的 WebApplication 实例。

内部发生了什么:

  • 校验所有 IOC 注册的完整性(依赖是否能被解析)
  • 构建完整的 IServiceProvider(服务提供者,即 IOC 容器实例)
  • 前面的所有配置(Config、Logging、Services)在此刻全部生效
  • 返回 WebApplication 对象,此时它既是一个 IOC 容器,也是一个 中间件管道宿主

形象理解:搬家车的货厢装好了,所有东西按照清单排列摆放完毕,车已经可以发动。

Step 5:注册中间件管道——管线铺设

app.UseRouting();app.UseAuthentication();app.UseAuthorization();app.MapControllers();

Build() 之后,我们拿到 WebApplication(实现了 IApplicationBuilder),接下来铺设请求处理管道

  • UseRouting()
    :注册路由中间件,解析请求 URL 匹配 Endpoint
  • UseAuthentication()
    :注册认证中间件,验证用户身份
  • UseAuthorization()
    :注册授权中间件,校验访问权限
  • MapControllers()
    :映射 Controller 路由 Endpoint

管道的顺序至关重要! 比如 UseAuthentication 必须在 UseAuthorization 之前,因为只有先验证身份,才能判断权限。这个顺序错误会导致功能异常——理解底层原理后你就能自信地排错。

Step 6:Run()——Kestrel 启动监听

app.Run();

最后一步,启动 Kestrel Web 服务器开始监听 HTTP 请求

  • Kestrel 绑定指定端口(默认 5000/5001,可通过 --urls 或配置文件指定)
  • 启动事件循环,等待 HttpRequest 到达
  • 一旦接收到请求,解析为 HttpContext,投入 HttpPipeline 处理

从这一刻开始,你的 ASP.NET Core 10 应用正式进入运行状态——用户发送的每一个请求都会经过你配置的中间件管道。

形象理解:新家大门打开,门铃响起来,每一位来客(请求)按照既定的通道(管道)进入、被接待、处理完毕后离开。

六步流程全景速览

① CreateBuilder(args)   →  信息采集,读取配置/环境/参数② Configure Builder     →  装配初始化,配置/日志/服务预备③ IOC 批量注册         →  服务清单,MVC/DB/业务 全量注册④ Build()            →  实例化 IOC 容器,配置全部生效⑤ Use 中间件         →  管道铺设,路由→认证→授权→映射⑥ Run()            →  Kestrel 启动监听,应用正式运行

面试常见追问CreateBuilder 和 Build 的区别是什么?答:CreateBuilder 是"配置阶段",记录所有需要的东西(参数、配置、服务注册);Build 是"实例化阶段",将配置编译为运行时对象(IOC 容器、中间件管道),Build 之后的修改不会再影响已创建的服务提供者。

六、ASP.NET Core 10 展望与后续学习路线

6.1 .NET 10 的新高度

作为 LTS 版本,ASP.NET Core 10 在统一平台的基础上进一步成熟:

  • 性能持续优化
    :Kestrel 的吞吐量、内存分配持续改进
  • Native AOT 完善
    :编译为本机代码,启动速度更快、内存占用更低
  • 云原生加持
    :更好的容器化支持、Kubernetes 集成
  • 开发者体验提升
    :Minimal API 成熟化、热重载稳定化

但万变不离其宗——启动流程、管道模型、IOC 容器这些核心架构,从 .NET Core 3.1 到今天 .NET 10,底层逻辑几乎没有变过。这也是为什么学透一套,受用十年的原因。

七、系列 10 篇完整规划

本专栏计划用10 篇带你从"会用"到"精通源码"

篇次
主题
核心内容
第 1 篇
开篇奠基
统一 CLR 设计理念、源码方法论、启动流程六步拆解
第 2 篇
中间件管道深度拆解
HttpPipeline 构建机制、自定义中间件、短路与分支管道
第 3 篇
路由系统全解密
Endpoint Routing、路由约束、路由模板、IRouter 源码
第 4 篇
IOC 容器源码透析
服务生命周期管理、DI 容器实现、第三方容器替换
第 5 篇
Kestrel 服务器内幕
跨平台 Web 服务器架构、连接管理、性能调优
第 6 篇
过滤器管道深度解析
ActionFilter、AuthorizationFilter、ExceptionFilter 执行顺序
第 7 篇
模型绑定与验证
ModelBinder 源码、InputFormatter、模型验证管道
第 8 篇
MVC 核心流程全链路
Controller 激活、Action 调用、View 渲染源码追踪
第 9 篇
性能优化专题
内存分配优化、Span 应用、Kestrel 高性能秘密
第 10 篇
终章:手写简易框架
从零实现最小化 Web 框架,验证全套理解,融会贯通

本期总结

知识点
掌握要点
版本演进
.NET Framework → .NET Core → .NET 5 统一 → .NET 10 LTS
跨平台本质
CoreCLR 统一运行时 + 抽象化的操作系统接口
读源码四步法
先会用 → 上帝视角 → 精读核心 → 自主扩展
两大运行链路
启动流程(初始化) + 请求响应流程(服务请求)
启动六步拆解
CreateBuilder → 配置Builder → IOC注册 → Build → Use中间件 → Run
调试方案
GitHub 拉源码 → startvs.cmd → MvcSandbox 断点调试

如果觉得这篇干货对你有帮助,别忘了关注、点赞、推荐、并转发给身边的同事朋友。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-14 10:35:42 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/854143.html
  2. 运行时间 : 0.310208s [ 吞吐率:3.22req/s ] 内存消耗:4,717.38kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=55a2b2089fe152e045312077fdebdf7a
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000605s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000889s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.100784s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.026741s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000771s ]
  6. SELECT * FROM `set` [ RunTime:0.006965s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000683s ]
  8. SELECT * FROM `article` WHERE `id` = 854143 LIMIT 1 [ RunTime:0.003961s ]
  9. UPDATE `article` SET `lasttime` = 1783996543 WHERE `id` = 854143 [ RunTime:0.031993s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000300s ]
  11. SELECT * FROM `article` WHERE `id` < 854143 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000630s ]
  12. SELECT * FROM `article` WHERE `id` > 854143 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000517s ]
  13. SELECT * FROM `article` WHERE `id` < 854143 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.017269s ]
  14. SELECT * FROM `article` WHERE `id` < 854143 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.022430s ]
  15. SELECT * FROM `article` WHERE `id` < 854143 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000860s ]
0.314280s