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

.NET 6中GraphQL查询依赖注入报错:无法解析仓储服务

问题解决方案

错误根源

报错信息明确指出:激活ApplicationParameterBusiness时无法解析IApplicationParamaterRepository类型的服务。这是因为你仅注册了业务层接口IApplicationParameterBusiness,但业务层实现类ApplicationParameterBusiness的构造函数依赖了仓储层接口IApplicationParamaterRepository,而该仓储接口未在DI容器中注册对应的实现类。

解决步骤

  1. 注册仓储层服务
    在Program.cs中添加仓储接口与实现类的注册代码,生命周期建议与业务层保持一致(如Scoped):

    // 注意:请替换为你实际的仓储实现类名称,同时检查接口名称拼写(错误信息中是IApplicationParamaterRepository,可能存在笔误)
    builder.Services.AddScoped<IApplicationParamaterRepository, ApplicationParamaterRepository>();
    

    若接口名称实际应为IApplicationParameterRepository(疑似少写一个e),请修正拼写后再完成注册。

  2. 校验业务层构造函数
    确认ApplicationParameterBusiness的构造函数正确注入了仓储接口,且参数类型、名称无拼写错误:

    public class ApplicationParameterBusiness : IApplicationParameterBusiness
    {
        private readonly IApplicationParamaterRepository _repository;
    
        // 确保构造函数参数类型与注册的接口完全一致
        public ApplicationParameterBusiness(IApplicationParamaterRepository repository)
        {
            _repository = repository;
        }
    
        // 其他业务逻辑方法...
    }
    
  3. 优化异步调用(可选但推荐)
    当前代码使用.Result同步等待异步方法,可能引发死锁问题。建议将GraphQL查询方法改为异步实现:

    [GraphQLDescription("Get ApplicationParameters")]
    public async Task<IQueryable<ApplicationParameterDTO>> GetApplicationParameter([Service] IApplicationParameterBusiness _applicationParameterBusiness, string appParamName)
    {
        var applicationParameterlist = await _applicationParameterBusiness.GetApplicationParameterByappParamName(appParamName);
        return applicationParameterlist.AsQueryable();
    }
    

内容的提问来源于stack exchange,提问作者Abhishek_Singh_Rana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:35:18