I have model for email setting
public class EmailSettingsModel {
public string MailServer { get; set; }
public int MailPort { get; set; }
public string SenderName { get; set; }
public string Sender { get; set; }
public string Password { get; set; }
}
I put secret value in Azure Key vault
MailServer:smtp.gmail.com; MailPort:587; SenderName:SenderName; Sender:the.sender@gmail.com; Password:123!2019#
In the Startup.cs
file, I put my code, register it with the run time:
public Startup(IConfiguration configuration) {
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services) {
//this appSetting can return value from Azure Key Vault, the secret key.
var appSetting = Configuration.GetValue<string>("AzureKeyVaultEmail");
services.Configure<EmailSettingsModel>(Configuration.GetSection("AzureKeyVaultEmail"));
services.AddSingleton<IEmailSender, EmailSender>();
services.AddOptions();
services.AddMvc();
}
For injection in class
public class EmailSender : IEmailSender
{
private readonly EmailSettingsModel _emailSettings;
public EmailSender (IOptions<EmailSettingsModel> emailSettings) {
_emailSettings = emailSettings.Value;
}
}
But _emailSettings
always null
. For '_emailSettings', it suppose return value
MailServer = smtp.gmail.com
MailPort = 587
SenderName = SenderName
Sender = the.sender@gmail.com
Password = 123!2019#
Why _emailSettings
always return null
? Do I miss something ?
I try to use this as reference