You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在.NET Aspire的DistributedApplication中如何配置ServiceProviderOptions?

.NET Aspire 中启用单例与作用域服务校验的方法

完全可行,你可以通过两种方式实现类似的校验机制:

1. 单个服务项目内单独配置

在Aspire解决方案中的各个服务项目(如Web API、Worker服务)的Program.cs里,依然可以沿用之前的方式配置ServiceProviderOptions:

var builder = WebApplication.CreateBuilder(args);

// 启用服务注册校验与作用域校验
builder.Host.UseServiceProviderFactory(new DefaultServiceProviderFactory(new ServiceProviderOptions
{
    ValidateOnBuild = true,
    ValidateScopes = true,
}));

// 后续服务注册、应用构建逻辑...
var app = builder.Build();
// ...

2. 全局统一配置(针对所有分布式服务)

如果希望在Aspire的分布式应用层面给所有托管服务统一启用校验,可以在DistributedApplicationBuilder中配置全局主机默认设置:

var builder = DistributedApplication.CreateBuilder(args);

// 全局启用所有服务的服务校验规则
builder.ConfigureHostDefaults(hostBuilder =>
{
    hostBuilder.UseServiceProviderFactory(new DefaultServiceProviderFactory(new ServiceProviderOptions
    {
        ValidateOnBuild = true,
        ValidateScopes = true,
    }));
});

// 添加分布式服务...
var apiService = builder.AddProject<Projects.MyApiService>("api");
var webApp = builder.AddProject<Projects.MyWebApp>("web");

builder.Build().Run();

校验规则说明

  • ValidateOnBuild:在服务容器构建阶段就检查服务注册的有效性,比如检测缺失的依赖项、无效的服务注册。
  • ValidateScopes:运行时校验作用域服务是否被单例服务直接/间接引用,避免出现作用域服务生命周期泄漏的问题。

内容的提问来源于stack exchange,提问作者Justin D. Harris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 16:45:56