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

.NET Core Web API集成GraphQL提示找不到ContactDTO对应服务报错

问题原因

错误是由ProjectType类中contact字段的类型定义错误直接引发的:

  • 你错误使用了InterfaceGraphType<ContactDTO>作为字段类型,InterfaceGraphType是用于声明GraphQL接口类型的泛型类,你既没有提前定义对应的Contact接口Graph类型,也没有将InterfaceGraphType<ContactDTO>注册到依赖注入容器,因此DI容器解析服务时报找不到对应类型的错误。
  • 你已经实现了对应ContactDTO的对象Graph类型ContactType,完全不需要使用接口类型声明该字段。
  • 额外的错误配置:Startup.cs中注册了ContactDTO,DTO是普通数据传输对象,不需要注册到DI容器,属于多余配置。
解决方案
  1. 修改ProjectType中contact字段的定义,替换为已实现的ContactType,同时补充字段的解析逻辑:
public class ProjectType : ObjectGraphType<ProjectDTO>
{
    public ProjectType()
    {
        Name = "Project";
        Field(_ => _.Id).Description("Project Id");
        Field(_ => _.Title).Description("Project Title");
        Field(_ => _.Description).Description("Project Description");
        Field(_ => _.ConfirmationCode).Description("Project Confirmation Code");
        Field(_ => _.Options).Description("Project Options (\"As a comma separated list\")");
        Field(_ => _.ProjectStatus).Description("Project Status (\"As an integer\")");
        Field(_ => _.CreatedTime).Description("Project Creation Time");
        Field(_ => _.UpdatedTime).Description("Project Update Time");
        Field(_ => _.EstimatedCompletion).Description("Estimated Completion Date");
        // 替换错误的接口类型声明为ContactType,补充resolve逻辑
        Field<ContactType>(
            name: "contact",
            description: "The contact that requested this project",
            resolve: context => context.Source.Contact
        );
    }
}

注意:上述代码中context.Source对应当前解析的ProjectDTO实例,需确保你的ProjectDTO类中存在名为Contact的ContactDTO类型属性,如属性名不同请对应修改。

  1. 删除Startup.cs中多余的ContactDTO注册:
    找到services.AddScoped<ContactDTO>();这一行直接删除即可。

如果你确实有使用GraphQL接口类型的需求,需额外完成以下步骤:

  • 定义ContactInterface类继承InterfaceGraphType<ContactDTO>,完成接口字段声明
  • 将ContactInterface注册到DI容器
  • 修改ContactType实现该接口
  • 再在ProjectType中使用InterfaceGraphType<ContactDTO>声明字段,同时配置接口的类型映射规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:54:04