C# .net core 3.1调用SendGrid密钥的用户机密返回空值

C# .net core 3.1调用SendGrid密钥的用户机密返回空值,c#,authentication,secretsmanager,C#,Authentication,Secretsmanager,我已经建立了一个项目如下 从Startup.cs: services.AddTransient<IEmailSender, EmailSender>(); services.Configure<AuthMessageSenderOptions>(Configuration); _secretOne = Configuration["SecretStuff:SecretOne"];

我已经建立了一个项目如下

从Startup.cs:

            services.AddTransient<IEmailSender, EmailSender>();
            services.Configure<AuthMessageSenderOptions>(Configuration);
            _secretOne = Configuration["SecretStuff:SecretOne"];
services.AddTransient();
服务。配置(配置);
_secretOne=配置[“SecretStuff:secretOne”];
添加了_secretOne变量以证明正在访问正确的secrets.json文件。它有一个SecretStuff块和一个AuthMessageSenderOptions块

在EmailSender.cs中

       public EmailSender(IOptions<AuthMessageSenderOptions> optionsAccessor)
        {
            Options = optionsAccessor.Value;
        }
公共电子邮件发件人(IOOptions Accessor)
{
Options=optionAccessor.Value;
}
Options=后的断点显示具有空值的键

最终我放弃了,硬编码了Options.SendGridKey和Options.SendGridUser,通过这个更改,项目可以正常工作


这是我第一次使用用户机密,因此当它不起作用时,我设置了一个控制台应用程序,它引用相同的Secrets.json文件并发送电子邮件。

我在以下方面找到了可能的答案:

我将Startup.cs更改为:

services.Configure<AuthMessageSenderOptions>(Configuration.GetSection("AuthMessageSenderOptions"));
services.Configure(Configuration.GetSection(“AuthMessageSenderOptions”);
现在这些值是它们应该有的。我确实浪费了很多时间在错误的地方寻找答案