.net core 3.1对SendGrid密钥的用户秘密的调用返回空值

问题描述

我在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"));

,现在值已达到应有的水平。我肯定浪费了很多时间在错误的位置寻找答案。