问题描述
我在https://docs.microsoft.com/en-us/aspnet/core/security/authentication/accconfirm?view=aspnetcore-3.1&tabs=visual-studio之后建立了一个项目
从Startup.cs:
services.AddTransient<IEmailSender,EmailSender>();
services.Configure<AuthMessageSenderOptions>(Configuration);
_secretone = Configuration["SecretStuff:Secretone"];
已添加_secretone变量,以证明正在访问正确的secrets.json文件。它同时具有SecretStuff块和AuthMessageSenderOptions块。
在EmailSender.cs中
public EmailSender(IOptions<AuthMessageSenderOptions> optionsAccessor)
{
Options = optionsAccessor.Value;
}
Options =后的断点显示具有空值的键。
最终,我放弃了并对Options.SendGridKey和Options.SendGridUser进行了硬编码,并进行了此更改,使项目按预期运行。
这是我对user-secrets的首次使用,因此当它不起作用时,我设置了一个控制台应用程序,该应用程序引用了相同的secrets.json文件并发送电子邮件。
解决方法
我在https://www.twilio.com/blog/2018/05/user-secrets-in-a-net-core-web-app.html
中找到了可能的答案我将Startup.cs更改为:
services.Configure<AuthMessageSenderOptions>(Configuration.GetSection("AuthMessageSenderOptions"));
,现在值已达到应有的水平。我肯定浪费了很多时间在错误的位置寻找答案。