【发布时间】:2021-10-13 03:14:56
【问题描述】:
我遇到以下错误,我无法开始这门课,请您帮我解决。
错误:
System.InvalidOperationException:尝试激活“IcarusOnlineAPI.Controllers.Auth.AuthController”时无法解析“IcarusOnlineAPI.Services.Email.SendEmail”类型的服务。 在 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp,类型类型,类型 requiredBy,布尔 isDefaultParameterRequired) 在 lambda_method10(闭包,IServiceProvider,对象 []) 在 Microsoft.AspNetCore.Mvc.Controllers.ControllerActivatorProvider.c__DisplayClass4_0.b__0(ControllerContext controllerContext) 在 Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.c__DisplayClass5_0.g__CreateController|0(ControllerContext controllerContext) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(状态&下一个,范围&范围,对象&状态,布尔& isCompleted) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() --- 上一个位置的堆栈跟踪结束 --- 在 Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|19_0(ResourceInvoker 调用程序,任务 lastTask,下一个状态,作用域范围,对象状态,布尔 isCompleted) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker 调用程序,任务任务,IDisposable 范围) 在 Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(端点端点,任务 requestTask,ILogger 记录器) 在 Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext 上下文) 在 Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext 上下文) 在 Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext 上下文) 在 Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext) 在 Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext,ISwaggerProvider swaggerProvider) 在 Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext 上下文)
-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);
}
}
}
【问题讨论】:
-
您需要为 SendMail 类注册依赖