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

ASP.NET Core依赖注入报错:无法解析SendSMS服务

问题解决:ASP.NET Core依赖注入无法解析具体类

核心原因

你通过builder.Services.AddTransient<IsmsSender, SendSms>()注册的是接口与实现类的映射关系,DI容器仅知晓如何解析IsmsSender接口实例,但你在HomeController构造函数中直接注入的是具体类SendSms,容器找不到该类的注册信息,因此抛出解析失败的异常。

两种解决方案

方案一:注入接口(推荐,符合依赖倒置原则)

修改HomeController的构造函数,注入IsmsSender接口而非具体类:

public class HomeController : Controller
{
    private readonly IsmsSender _smsSender;

    // 注入接口类型
    public HomeController(IsmsSender smsSender)
    {
        _smsSender = smsSender;
    }

    // 业务逻辑中直接使用_smsSender调用接口方法即可
}

这种方式能降低代码耦合,后续若需替换短信发送实现(比如换成AliyunSendSms),只需修改注册代码,无需改动控制器逻辑。

方案二:注册具体类(仅当必须直接使用具体类时)

如果业务场景确实需要直接注入SendSms,在Program.cs中额外注册该具体类:

// 保留原接口-实现映射
builder.Services.AddTransient<IsmsSender, SendSms>();
// 新增具体类的独立注册
builder.Services.AddTransient<SendSms>();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:15:35