当前位置: 首页 > 知识库问答 >
问题:

C#Net核心系统。InvalidOperationException:无法解析[重复]类型的服务

司空炯
2023-03-14

我有以下错误,我无法开始这门课,我想请你帮我解决它。

错误:

系统InvalidOperationException:无法解析“IcarusOnlineAPI”类型的服务。服务。电子邮件试图激活“IcarusOnlineAPI”时发送电子邮件。控制器。授权。AuthController’。在微软。扩展。依赖注入。ActivatorUtilities。Microsoft lambda\u method10(闭包,IServiceProvider,Object[])的GetService(IServiceProvider sp,Type Type,Type requiredBy,Boolean isDefaultParameterRequired)。AspNetCore。Mvc。控制器。ControllerActivatorProvider。

    -Constructor Class--
    private readonly ICARUS_Login_DatabaseContext _loginContext;
    private readonly ICARUS_User_DatabaseContext _userContext;
    private readonly ICARUS_Char_DatabaseContext _charContext;
    private readonly WEBContext _webcontext;
    private readonly ILogger<AuthController> _logger;
    private readonly SendEmail _sendEmail;

    public AuthController(ILogger<AuthController> logger, 
        ICARUS_Login_DatabaseContext loginContext,
        ICARUS_User_DatabaseContext userContext, 
        ICARUS_Char_DatabaseContext charContext, 
        WEBContext webcontext,
        SendEmail sendEmail
        )
    {
        _loginContext = loginContext;
        _userContext = userContext;
        _charContext = charContext;
        _webcontext = webcontext;
        _logger = logger;
        _sendEmail = sendEmail;
    }

-- Send Email Class-


   using IcarusOnlineAPI.MailSender;
   using Microsoft.AspNetCore.Hosting;
   using Microsoft.Extensions.Configuration;
   using System.IO;
   using System.Threading.Tasks;

namespace IcarusOnlineAPI.Services.Email
{
    public class SendEmail
    {
        private readonly IWebHostEnvironment _env;
        private readonly AadGraphApiDelegatedClient _aadGraphApiDelegatedClient;
        private readonly IConfiguration _configuration;

        public SendEmail(IWebHostEnvironment env,
            AadGraphApiDelegatedClient aadGraphApiDelegatedClient,
            IConfiguration configuration)
        {
            _env = env;
            _aadGraphApiDelegatedClient = aadGraphApiDelegatedClient;
            _configuration = configuration;
        }

        public async Task SendRecoverAccountEmail(string Login, string Email, string Token)
        {
            await Task.Delay(10000);

            var emailTemplate = File.ReadAllText
                (Path.Combine(_env.WebRootPath, "EmailTemplates/RecoverAccount.html"));

            var emailContent = emailTemplate
                .Replace("{Login}", Login)
                .Replace("{Link}", _configuration["Url"] + "/RecoverAccount/" + Token);

            var emailMessage = new EmailBuilder()
                .CreateHtmlEmail(Email, "Recuperar Conta", emailContent);

            await _aadGraphApiDelegatedClient.SendEmailAsync(emailMessage);
        }
    }
}

共有1个答案

湛光明
2023-03-14

错误是不言而喻的。您有公共AuthController(sendmail-sendmail),依赖注入不知道如何实例化sendmail。在控制器的DI中传递具体(类)变量不是一个好的做法。您要执行以下操作:

public interface ISendEmail { ... }
public class SendEmail : ISendEmail { ... }

并在启动中。cs

services.AddScoped<ISendEmail, SendEmail>();

然后在控制器中

private ISendEmail _sendEmail;
public AuthController(ISendEmail sendEmail) {
   _sendEmail = sendEmail;
}
 类似资料:
  • 我正在用ASP开发一个Web API。净核心。当我使用post请求执行API时,在UnitController的post方法的断点之前会引发异常。 例外 请求启动HTTP/1.1 POSThttp://localhost:5000/api/unit应用程序/json 31失败:Microsoft. AspNetCore. Server. Kestrel[13]连接ID"0HKVTL9A1LTD4"

  • 我正在尝试构建一个简单的api,作为对项目未来api的测试。但我一直有这个错误 InvalidOperationException:无法解析“AspnetCore\u WebApi”类型的服务。模型。TarefaContext“正在尝试激活”AspnetCore\u WebApi。模型。TarefaRepositorio’。 这是TarefaContext。反恐精英 TarefaRepositor

  • 每次CodeIgniter运行时都有很多基础类作为核心框架的一部分被自动初始化.但你也可以使用经过你修改的类来替换甚至扩展这些原始的核心系统类. 大多数用户一般不会有这种需求,但对于那些想较大幅度的改变CodeIgniter的人来说,我们依然提供了替换和扩展核心系统类的选择. 注意:  改变系统核心类会产生很大影响,所以在你做之前必须清楚地知道自己正在做什么. 系统类清单 以下是系统核心文件的清单

  • 每次 CodeIgniter 运行时,都有一些基础类伴随着核心框架自动的被初始化。但你也可以使用你自己类来替代这些核心类或者扩展这些核心类。 大多数用户一般不会有这种需求,但对于那些想较大幅度的改变 CodeIgniter 的人来说,我们依然提供了替换和扩展核心类的选择。 注解 改变系统核心类会产生很大影响,所以在你做之前必须清楚地知道自己正在做什么。 系统类清单 以下是系统核心文件的清单,它们在

  • 我刚开始使用Android Studio一周,它对我来说非常好,但当我今天开始使用Android Studio时,我得到了一个错误:“错误:重复类:mypackage”。R’。我以前在使用Eclipse时看到过这个错误,所以我尝试过几次重建项目并重新启动Android Studio,但都没有帮助。 在阅读了一些Stackoverflow问题后,我尝试删除R.java并再次重建,现在我在重建时没有收

  • 我使用的是Grails 2.2.2,通过在BuildConfig中添加以下几行,我已经安装了spring-security-core-2.0-RC2。groovy文件: 插件安装成功,我已经使用s2快速入门脚本创建了安全域和控制器。 现在,我用以下代码更新了我的一个控制器: 但是,当我尝试运行该应用程序时,出现以下错误: |错误编译错误:启动失败:C:\workspace\SW开发\生产\MyGr