.NET 6(VS Code)中Configuration未找到及Lambda无返回值问题求助
问题解决:.NET 6配置MongoDB依赖注入的两个错误
错误1:The name 'Configuration' does not exist in the current context
.NET 6采用顶级语句模式后,Configuration并非全局可用对象,必须通过builder.Configuration来访问配置,直接调用Configuration会触发上下文不存在的错误。
错误2:Not all code paths return a value in lambda expression of type 'Func<IServiceProvider, IMongoClient>'
你的lambda表达式仅完成了MongoDB配置的读取,但没有返回符合IMongoClient类型要求的实例,不符合委托的返回值规则,必须创建并返回MongoClient对象。
修正后的完整代码
builder.Services.AddSingleton<IMongoClient>(serviceProvider => { // 通过builder访问配置对象 var settings = builder.Configuration.GetSection(nameof(MongoDbSettings)).Get<MongoDbSettings>(); // 返回IMongoClient实现类实例 return new MongoClient(settings.ConnectionString); });
如果不想直接依赖builder,也可以通过服务提供者获取IConfiguration:
builder.Services.AddSingleton<IMongoClient>(serviceProvider => { var configuration = serviceProvider.GetRequiredService<IConfiguration>(); var settings = configuration.GetSection(nameof(MongoDbSettings)).Get<MongoDbSettings>(); return new MongoClient(settings.ConnectionString); });
注意:需确保MongoDbSettings类包含ConnectionString属性,且appsettings.json中配置了对应的节点。
内容的提问来源于stack exchange,提问作者Muhammed Irshad
相关产品推荐
相关产品推荐

