返回题库高级 .NET 刷题ASP.NET Core 选择题 · 第 8 / 50 篇

ASP.NET Core 试题 08:依赖注入生命周期

0141 在 Transient 的框架契约中,哪项是应直接依赖的主规则?

难度: 基础

  • A. Transient 服务在一个 HTTP 请求内天然只有一个实例
  • B. Transient 服务每次从容器请求时通常创建新实例
  • C. 同一对象图中是否多次解析会影响实例数,容器负责释放其创建的可释放实例
  • D. 观察到“同一请求的两个消费者观察到不同状态”即可把一次现象当成完整框架契约。
查看答案与解析

正确答案B

正确答案直接描述 Transient 的主规则:Transient 服务每次从容器请求时通常创建新实例。选项“同一对象图中是否多次解析会影响实例数,容器负责释放其创建的可释放实例”是使用规则时要验证的边界,不是规则本身;“Transient 服务在一个 HTTP 请求内天然只有一个实例”则是会导致错误实现的典型误区。场景只能提供线索,不能替代框架契约。

0142 同一请求的两个消费者观察到不同状态。排查时哪项动作最合理?

难度: 进阶

  • A. 直接按“Transient 服务在一个 HTTP 请求内天然只有一个实例”定性,不再检查配置、身份或运行时证据。
  • B. 只增加重试次数或机器资源,暂不核对“同一对象图中是否多次解析会影响实例数,容器负责释放其创建的可释放实例”。
  • C. 先验证“同一对象图中是否多次解析会影响实例数,容器负责释放其创建的可释放实例”,再依据“Transient 服务每次从容器请求时通常创建新实例”判断实现是否符合契约。
  • D. 以一次成功请求作为结论,不再确认“Transient 服务每次从容器请求时通常创建新实例”是否成立。
查看答案与解析

正确答案C

场景“同一请求的两个消费者观察到不同状态”指向 Transient,但症状本身不能证明根因。正确排查应先确认边界“同一对象图中是否多次解析会影响实例数,容器负责释放其创建的可释放实例”,再用主规则“Transient 服务每次从容器请求时通常创建新实例”解释证据。直接采用误区“Transient 服务在一个 HTTP 请求内天然只有一个实例”、只扩容或依赖一次成功都会掩盖真实配置和请求路径。

0143 关于 Transient,以下哪项说法不成立?

难度: 实战

  • A. Transient 服务在一个 HTTP 请求内天然只有一个实例
  • B. Transient 服务每次从容器请求时通常创建新实例
  • C. 同一对象图中是否多次解析会影响实例数,容器负责释放其创建的可释放实例
  • D. 出现“同一请求的两个消费者观察到不同状态”时,应收集证据并同时核对主规则与适用边界。
查看答案与解析

正确答案A

题目要求选出不成立的说法,答案“Transient 服务在一个 HTTP 请求内天然只有一个实例”正是 Transient 的典型误区。其余三项分别给出了主规则“Transient 服务每次从容器请求时通常创建新实例”、适用边界“同一对象图中是否多次解析会影响实例数,容器负责释放其创建的可释放实例”以及面向场景的正确取证方式,不能因为题干使用否定问法而反选这些有效结论。

0144 针对“同一请求的两个消费者观察到不同状态”进行上线评审,哪项决策依据最完整?

难度: 实战

  • A. 按“Transient 服务在一个 HTTP 请求内天然只有一个实例”修改实现,并把一次请求成功作为验收结果。
  • B. 按“Transient 服务每次从容器请求时通常创建新实例”修改代码后直接上线,不验证“同一对象图中是否多次解析会影响实例数,容器负责释放其创建的可释放实例”。
  • C. 只验证“同一对象图中是否多次解析会影响实例数,容器负责释放其创建的可释放实例”,但实现仍继续依赖“Transient 服务在一个 HTTP 请求内天然只有一个实例”。
  • D. 按“Transient 服务每次从容器请求时通常创建新实例”修正实现,并用测试或遥测验证“同一对象图中是否多次解析会影响实例数,容器负责释放其创建的可释放实例”。
查看答案与解析

正确答案D

完整决策同时覆盖规则与验证:Transient 服务每次从容器请求时通常创建新实例;并确认 同一对象图中是否多次解析会影响实例数,容器负责释放其创建的可释放实例。继续接受“Transient 服务在一个 HTTP 请求内天然只有一个实例”会让评审依据失真;只改代码不验证边界,或只检查边界却沿用误区,都不足以判断“同一请求的两个消费者观察到不同状态”这一生产场景能否安全上线。

0145 在 Scoped 的框架契约中,哪项是应直接依赖的主规则?

难度: 基础

  • A. Scoped 服务在整个进程生命周期内共享
  • B. 后台线程或单例中使用 Scoped 服务时必须显式创建并释放作用域
  • C. Web 应用中的 Scoped 服务通常每个请求作用域创建一次
  • D. 观察到“后台服务直接注入 DbContext 导致生命周期错误”即可把一次现象当成完整框架契约。
查看答案与解析

正确答案C

正确答案直接描述 Scoped 的主规则:Web 应用中的 Scoped 服务通常每个请求作用域创建一次。选项“后台线程或单例中使用 Scoped 服务时必须显式创建并释放作用域”是使用规则时要验证的边界,不是规则本身;“Scoped 服务在整个进程生命周期内共享”则是会导致错误实现的典型误区。场景只能提供线索,不能替代框架契约。

0146 后台服务直接注入 DbContext 导致生命周期错误。排查时哪项动作最合理?

难度: 进阶

  • A. 先验证“后台线程或单例中使用 Scoped 服务时必须显式创建并释放作用域”,再依据“Web 应用中的 Scoped 服务通常每个请求作用域创建一次”判断实现是否符合契约。
  • B. 直接按“Scoped 服务在整个进程生命周期内共享”定性,不再检查配置、身份或运行时证据。
  • C. 只增加重试次数或机器资源,暂不核对“后台线程或单例中使用 Scoped 服务时必须显式创建并释放作用域”。
  • D. 以一次成功请求作为结论,不再确认“Web 应用中的 Scoped 服务通常每个请求作用域创建一次”是否成立。
查看答案与解析

正确答案A

场景“后台服务直接注入 DbContext 导致生命周期错误”指向 Scoped,但症状本身不能证明根因。正确排查应先确认边界“后台线程或单例中使用 Scoped 服务时必须显式创建并释放作用域”,再用主规则“Web 应用中的 Scoped 服务通常每个请求作用域创建一次”解释证据。直接采用误区“Scoped 服务在整个进程生命周期内共享”、只扩容或依赖一次成功都会掩盖真实配置和请求路径。

0147 关于 Scoped,以下哪项说法不成立?

难度: 实战

  • A. Web 应用中的 Scoped 服务通常每个请求作用域创建一次
  • B. 后台线程或单例中使用 Scoped 服务时必须显式创建并释放作用域
  • C. 出现“后台服务直接注入 DbContext 导致生命周期错误”时,应收集证据并同时核对主规则与适用边界。
  • D. Scoped 服务在整个进程生命周期内共享
查看答案与解析

正确答案D

题目要求选出不成立的说法,答案“Scoped 服务在整个进程生命周期内共享”正是 Scoped 的典型误区。其余三项分别给出了主规则“Web 应用中的 Scoped 服务通常每个请求作用域创建一次”、适用边界“后台线程或单例中使用 Scoped 服务时必须显式创建并释放作用域”以及面向场景的正确取证方式,不能因为题干使用否定问法而反选这些有效结论。

0148 针对“后台服务直接注入 DbContext 导致生命周期错误”进行上线评审,哪项决策依据最完整?

难度: 实战

  • A. 按“Scoped 服务在整个进程生命周期内共享”修改实现,并把一次请求成功作为验收结果。
  • B. 按“Web 应用中的 Scoped 服务通常每个请求作用域创建一次”修正实现,并用测试或遥测验证“后台线程或单例中使用 Scoped 服务时必须显式创建并释放作用域”。
  • C. 按“Web 应用中的 Scoped 服务通常每个请求作用域创建一次”修改代码后直接上线,不验证“后台线程或单例中使用 Scoped 服务时必须显式创建并释放作用域”。
  • D. 只验证“后台线程或单例中使用 Scoped 服务时必须显式创建并释放作用域”,但实现仍继续依赖“Scoped 服务在整个进程生命周期内共享”。
查看答案与解析

正确答案B

完整决策同时覆盖规则与验证:Web 应用中的 Scoped 服务通常每个请求作用域创建一次;并确认 后台线程或单例中使用 Scoped 服务时必须显式创建并释放作用域。继续接受“Scoped 服务在整个进程生命周期内共享”会让评审依据失真;只改代码不验证边界,或只检查边界却沿用误区,都不足以判断“后台服务直接注入 DbContext 导致生命周期错误”这一生产场景能否安全上线。

0149 在 Singleton 的框架契约中,哪项是应直接依赖的主规则?

难度: 基础

  • A. Singleton 会为每个请求自动复制可变字段
  • B. 实现必须支持并发访问,且不能直接捕获较短生命周期依赖
  • C. 观察到“并发请求修改单例缓存字典时发生竞态”即可把一次现象当成完整框架契约。
  • D. Singleton 从首次创建到根容器释放期间复用同一实例
查看答案与解析

正确答案D

正确答案直接描述 Singleton 的主规则:Singleton 从首次创建到根容器释放期间复用同一实例。选项“实现必须支持并发访问,且不能直接捕获较短生命周期依赖”是使用规则时要验证的边界,不是规则本身;“Singleton 会为每个请求自动复制可变字段”则是会导致错误实现的典型误区。场景只能提供线索,不能替代框架契约。

0150 并发请求修改单例缓存字典时发生竞态。排查时哪项动作最合理?

难度: 进阶

  • A. 先验证“实现必须支持并发访问,且不能直接捕获较短生命周期依赖”,再依据“Singleton 从首次创建到根容器释放期间复用同一实例”判断实现是否符合契约。
  • B. 直接按“Singleton 会为每个请求自动复制可变字段”定性,不再检查配置、身份或运行时证据。
  • C. 只增加重试次数或机器资源,暂不核对“实现必须支持并发访问,且不能直接捕获较短生命周期依赖”。
  • D. 以一次成功请求作为结论,不再确认“Singleton 从首次创建到根容器释放期间复用同一实例”是否成立。
查看答案与解析

正确答案A

场景“并发请求修改单例缓存字典时发生竞态”指向 Singleton,但症状本身不能证明根因。正确排查应先确认边界“实现必须支持并发访问,且不能直接捕获较短生命周期依赖”,再用主规则“Singleton 从首次创建到根容器释放期间复用同一实例”解释证据。直接采用误区“Singleton 会为每个请求自动复制可变字段”、只扩容或依赖一次成功都会掩盖真实配置和请求路径。

0151 关于 Singleton,以下哪项说法不成立?

难度: 实战

  • A. Singleton 从首次创建到根容器释放期间复用同一实例
  • B. Singleton 会为每个请求自动复制可变字段
  • C. 实现必须支持并发访问,且不能直接捕获较短生命周期依赖
  • D. 出现“并发请求修改单例缓存字典时发生竞态”时,应收集证据并同时核对主规则与适用边界。
查看答案与解析

正确答案B

题目要求选出不成立的说法,答案“Singleton 会为每个请求自动复制可变字段”正是 Singleton 的典型误区。其余三项分别给出了主规则“Singleton 从首次创建到根容器释放期间复用同一实例”、适用边界“实现必须支持并发访问,且不能直接捕获较短生命周期依赖”以及面向场景的正确取证方式,不能因为题干使用否定问法而反选这些有效结论。

0152 针对“并发请求修改单例缓存字典时发生竞态”进行上线评审,哪项决策依据最完整?

难度: 实战

  • A. 按“Singleton 会为每个请求自动复制可变字段”修改实现,并把一次请求成功作为验收结果。
  • B. 按“Singleton 从首次创建到根容器释放期间复用同一实例”修改代码后直接上线,不验证“实现必须支持并发访问,且不能直接捕获较短生命周期依赖”。
  • C. 按“Singleton 从首次创建到根容器释放期间复用同一实例”修正实现,并用测试或遥测验证“实现必须支持并发访问,且不能直接捕获较短生命周期依赖”。
  • D. 只验证“实现必须支持并发访问,且不能直接捕获较短生命周期依赖”,但实现仍继续依赖“Singleton 会为每个请求自动复制可变字段”。
查看答案与解析

正确答案C

完整决策同时覆盖规则与验证:Singleton 从首次创建到根容器释放期间复用同一实例;并确认 实现必须支持并发访问,且不能直接捕获较短生命周期依赖。继续接受“Singleton 会为每个请求自动复制可变字段”会让评审依据失真;只改代码不验证边界,或只检查边界却沿用误区,都不足以判断“并发请求修改单例缓存字典时发生竞态”这一生产场景能否安全上线。

0153 在 捕获 Scoped 服务 的框架契约中,哪项是应直接依赖的主规则?

难度: 基础

  • A. 关闭 ValidateScopes 后捕获 Scoped 服务就变得线程安全
  • B. 生产环境也不应依赖关闭验证来掩盖生命周期设计错误
  • C. 观察到“部署环境未报错但用户数据跨请求串扰”即可把一次现象当成完整框架契约。
  • D. 默认作用域验证可检测从 Singleton 直接依赖 Scoped 的 captive dependency
查看答案与解析

正确答案D

正确答案直接描述 捕获 Scoped 服务 的主规则:默认作用域验证可检测从 Singleton 直接依赖 Scoped 的 captive dependency。选项“生产环境也不应依赖关闭验证来掩盖生命周期设计错误”是使用规则时要验证的边界,不是规则本身;“关闭 ValidateScopes 后捕获 Scoped 服务就变得线程安全”则是会导致错误实现的典型误区。场景只能提供线索,不能替代框架契约。

0154 部署环境未报错但用户数据跨请求串扰。排查时哪项动作最合理?

难度: 进阶

  • A. 直接按“关闭 ValidateScopes 后捕获 Scoped 服务就变得线程安全”定性,不再检查配置、身份或运行时证据。
  • B. 只增加重试次数或机器资源,暂不核对“生产环境也不应依赖关闭验证来掩盖生命周期设计错误”。
  • C. 先验证“生产环境也不应依赖关闭验证来掩盖生命周期设计错误”,再依据“默认作用域验证可检测从 Singleton 直接依赖 Scoped 的 captive dependency”判断实现是否符合契约。
  • D. 以一次成功请求作为结论,不再确认“默认作用域验证可检测从 Singleton 直接依赖 Scoped 的 captive dependency”是否成立。
查看答案与解析

正确答案C

场景“部署环境未报错但用户数据跨请求串扰”指向 捕获 Scoped 服务,但症状本身不能证明根因。正确排查应先确认边界“生产环境也不应依赖关闭验证来掩盖生命周期设计错误”,再用主规则“默认作用域验证可检测从 Singleton 直接依赖 Scoped 的 captive dependency”解释证据。直接采用误区“关闭 ValidateScopes 后捕获 Scoped 服务就变得线程安全”、只扩容或依赖一次成功都会掩盖真实配置和请求路径。

0155 关于 捕获 Scoped 服务,以下哪项说法不成立?

难度: 实战

  • A. 默认作用域验证可检测从 Singleton 直接依赖 Scoped 的 captive dependency
  • B. 关闭 ValidateScopes 后捕获 Scoped 服务就变得线程安全
  • C. 生产环境也不应依赖关闭验证来掩盖生命周期设计错误
  • D. 出现“部署环境未报错但用户数据跨请求串扰”时,应收集证据并同时核对主规则与适用边界。
查看答案与解析

正确答案B

题目要求选出不成立的说法,答案“关闭 ValidateScopes 后捕获 Scoped 服务就变得线程安全”正是 捕获 Scoped 服务 的典型误区。其余三项分别给出了主规则“默认作用域验证可检测从 Singleton 直接依赖 Scoped 的 captive dependency”、适用边界“生产环境也不应依赖关闭验证来掩盖生命周期设计错误”以及面向场景的正确取证方式,不能因为题干使用否定问法而反选这些有效结论。

0156 针对“部署环境未报错但用户数据跨请求串扰”进行上线评审,哪项决策依据最完整?

难度: 实战

  • A. 按“默认作用域验证可检测从 Singleton 直接依赖 Scoped 的 captive dependency”修正实现,并用测试或遥测验证“生产环境也不应依赖关闭验证来掩盖生命周期设计错误”。
  • B. 按“关闭 ValidateScopes 后捕获 Scoped 服务就变得线程安全”修改实现,并把一次请求成功作为验收结果。
  • C. 按“默认作用域验证可检测从 Singleton 直接依赖 Scoped 的 captive dependency”修改代码后直接上线,不验证“生产环境也不应依赖关闭验证来掩盖生命周期设计错误”。
  • D. 只验证“生产环境也不应依赖关闭验证来掩盖生命周期设计错误”,但实现仍继续依赖“关闭 ValidateScopes 后捕获 Scoped 服务就变得线程安全”。
查看答案与解析

正确答案A

完整决策同时覆盖规则与验证:默认作用域验证可检测从 Singleton 直接依赖 Scoped 的 captive dependency;并确认 生产环境也不应依赖关闭验证来掩盖生命周期设计错误。继续接受“关闭 ValidateScopes 后捕获 Scoped 服务就变得线程安全”会让评审依据失真;只改代码不验证边界,或只检查边界却沿用误区,都不足以判断“部署环境未报错但用户数据跨请求串扰”这一生产场景能否安全上线。

0157 在 手动创建作用域 的框架契约中,哪项是应直接依赖的主规则?

难度: 基础

  • A. IServiceScopeFactory.CreateScope 或 CreateAsyncScope 用于后台任务等显式工作单元
  • B. 创建作用域后其中服务会自动提升为 Singleton
  • C. 作用域必须及时释放,异步可释放依赖应使用异步作用域
  • D. 观察到“定时任务每轮需要独立 DbContext”即可把一次现象当成完整框架契约。
查看答案与解析

正确答案A

正确答案直接描述 手动创建作用域 的主规则:IServiceScopeFactory.CreateScope 或 CreateAsyncScope 用于后台任务等显式工作单元。选项“作用域必须及时释放,异步可释放依赖应使用异步作用域”是使用规则时要验证的边界,不是规则本身;“创建作用域后其中服务会自动提升为 Singleton”则是会导致错误实现的典型误区。场景只能提供线索,不能替代框架契约。

0158 定时任务每轮需要独立 DbContext。排查时哪项动作最合理?

难度: 进阶

  • A. 直接按“创建作用域后其中服务会自动提升为 Singleton”定性,不再检查配置、身份或运行时证据。
  • B. 只增加重试次数或机器资源,暂不核对“作用域必须及时释放,异步可释放依赖应使用异步作用域”。
  • C. 以一次成功请求作为结论,不再确认“IServiceScopeFactory.CreateScope 或 CreateAsyncScope 用于后台任务等显式工作单元”是否成立。
  • D. 先验证“作用域必须及时释放,异步可释放依赖应使用异步作用域”,再依据“IServiceScopeFactory.CreateScope 或 CreateAsyncScope 用于后台任务等显式工作单元”判断实现是否符合契约。
查看答案与解析

正确答案D

场景“定时任务每轮需要独立 DbContext”指向 手动创建作用域,但症状本身不能证明根因。正确排查应先确认边界“作用域必须及时释放,异步可释放依赖应使用异步作用域”,再用主规则“IServiceScopeFactory.CreateScope 或 CreateAsyncScope 用于后台任务等显式工作单元”解释证据。直接采用误区“创建作用域后其中服务会自动提升为 Singleton”、只扩容或依赖一次成功都会掩盖真实配置和请求路径。

0159 关于 手动创建作用域,以下哪项说法不成立?

难度: 实战

  • A. IServiceScopeFactory.CreateScope 或 CreateAsyncScope 用于后台任务等显式工作单元
  • B. 创建作用域后其中服务会自动提升为 Singleton
  • C. 作用域必须及时释放,异步可释放依赖应使用异步作用域
  • D. 出现“定时任务每轮需要独立 DbContext”时,应收集证据并同时核对主规则与适用边界。
查看答案与解析

正确答案B

题目要求选出不成立的说法,答案“创建作用域后其中服务会自动提升为 Singleton”正是 手动创建作用域 的典型误区。其余三项分别给出了主规则“IServiceScopeFactory.CreateScope 或 CreateAsyncScope 用于后台任务等显式工作单元”、适用边界“作用域必须及时释放,异步可释放依赖应使用异步作用域”以及面向场景的正确取证方式,不能因为题干使用否定问法而反选这些有效结论。

0160 针对“定时任务每轮需要独立 DbContext”进行上线评审,哪项决策依据最完整?

难度: 实战

  • A. 按“创建作用域后其中服务会自动提升为 Singleton”修改实现,并把一次请求成功作为验收结果。
  • B. 按“IServiceScopeFactory.CreateScope 或 CreateAsyncScope 用于后台任务等显式工作单元”修改代码后直接上线,不验证“作用域必须及时释放,异步可释放依赖应使用异步作用域”。
  • C. 按“IServiceScopeFactory.CreateScope 或 CreateAsyncScope 用于后台任务等显式工作单元”修正实现,并用测试或遥测验证“作用域必须及时释放,异步可释放依赖应使用异步作用域”。
  • D. 只验证“作用域必须及时释放,异步可释放依赖应使用异步作用域”,但实现仍继续依赖“创建作用域后其中服务会自动提升为 Singleton”。
查看答案与解析

正确答案C

完整决策同时覆盖规则与验证:IServiceScopeFactory.CreateScope 或 CreateAsyncScope 用于后台任务等显式工作单元;并确认 作用域必须及时释放,异步可释放依赖应使用异步作用域。继续接受“创建作用域后其中服务会自动提升为 Singleton”会让评审依据失真;只改代码不验证边界,或只检查边界却沿用误区,都不足以判断“定时任务每轮需要独立 DbContext”这一生产场景能否安全上线。

官方资料

当前分类

ASP.NET Core 选择题

查看全部分类 →
  1. 06ASP.NET Core 试题 06:端点路由与元数据20 题
  2. 07ASP.NET Core 试题 07:路由约束与链接生成20 题
  3. 08ASP.NET Core 试题 08:依赖注入生命周期20 题
  4. 09ASP.NET Core 试题 09:依赖注入高级用法20 题
  5. 10ASP.NET Core 试题 10:配置提供程序20 题
ESC

输入关键词开始搜索