【发布时间】:2019-11-30 18:56:42
【问题描述】:
好的,我显然在这里做了一些愚蠢的事情,但我似乎找不到它。
我正在编写我的第一个 Razor Pages 应用程序并创建了一个 EmailSender 类,它实现了 IEmailSender。此外,EmailSender 构造函数接受 EmailSettings 参数。 EmailSettings 实现如下。
appsettings.json
"EmailSettings": {
"Host": "****.*****.com",
"Port": "587",
"UserName": "****@**********.com",
"Password": "***********",
"FromAddress": "****@**********.com",
"EnableSsl": "true"
},
EmailSettings.cs
public class EmailSettings
{
public string Host { get; set; }
public int Port { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string FromAddress { get; set; }
public bool EnableSsl { get; set; }
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// ...
services.Configure<EmailSettings>(Configuration.GetSection("EmailSettings"));
services.AddSingleton<IEmailSender, EmailSender>();
}
这遵循article I read 的基本方法。但是当我运行该应用程序时,我立即得到一个异常:
System.AggregateException: '某些服务无法构建(验证服务描述符时出错'ServiceType: Microsoft.AspNetCore.Identity.UI.Services.IEmailSender Lifetime: Transient ImplementationType: Bamtok.Services.EmailSender': Unable在尝试激活“Bamtok.Services.EmailSender”时解析“Bamtok.Services.EmailSettings”类型的服务。)”
不知何故,它无法实例化 EmailSettings 实例以传递给 EmailSender 构造函数。
谁能看到我错过了什么?
【问题讨论】:
-
Configure 添加了
IOptions<EmailSettings>并且很可能您将EmailSettings注入到依赖类中。 -
链接文章显示
IOptions<EmailSettings> emailSettings被注入
标签: c# asp.net-core dependency-injection razor-pages