Таким образом, приведенный ниже код используется для работы в 2.2, но после обновления целевой платформы и пакетов nuget до 3.1 я получаю следующую ошибку в службах. Строка AddSingleton
System.ArgumentNullException: ' Значение не может быть нулевым. (Параметр 'creationInstance') '
Я добавил конфигурацию и классы обслуживания электронной почты.
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IEmailConfiguration>
(Configuration.GetSection("EmailConfiguration").Get<EmailConfiguration>());
services.AddTransient<IEmailService, EmailService>();
Настройки приложений
{
"EmailConfiguration": {
"SmtpServer": "smtp.office365.com",
"SmtpPort": xxxx,
"SmtpUsername": "xxxx",
"SmtpPassword": "xxx"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
IEmailConfiguration
public interface IEmailConfiguration
{
string SmtpServer { get; }
int SmtpPort { get; }
string SmtpUsername { get; set; }
string SmtpPassword { get; set; }
string PopServer { get; }
int PopPort { get; }
string PopUsername { get; }
string PopPassword { get; }
string SENDGRID_API_KEY { get; }
}
public class EmailConfiguration : IEmailConfiguration
{
public string SmtpServer { get; set; }
public int SmtpPort { get; set; }
public string SmtpUsername { get; set; }
public string SmtpPassword { get; set; }
public string PopServer { get; set; }
public int PopPort { get; set; }
public string PopUsername { get; set; }
public string PopPassword { get; set; }
public string SENDGRID_API_KEY { get; set; }
}