微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过电子邮件注册确认期间“ApiKey”参数为空

如何解决通过电子邮件注册确认期间“ApiKey”参数为空

我有注册确认问题。它显示一个 ArgumentNullException 并且我无法解决这个问题。

这是注册确认模型

[AllowAnonymous]
public class RegisterConfirmationModel : PageModel
{
    private readonly UserManager<ScarletSunset.Website.User.Areas.Identity.Data.User> _userManager;
    private readonly IEmailSender _sender;

    public RegisterConfirmationModel(UserManager<ScarletSunset.Website.User.Areas.Identity.Data.User> userManager,IEmailSender sender)
    {
        _userManager = userManager;
        _sender = sender;
    }

    public string Email { get; set; }

    public bool displayConfirmAccountLink { get; set; }

    public string EmailConfirmationUrl { get; set; }

    public async Task<IActionResult> OnGetAsync(string email,string returnUrl = null)
    {
        if (email == null)
        {
            return RedirectToPage("/Index");
        }

        var user = await _userManager.FindByEmailAsync(email);
        if (user == null)
        {
            return NotFound($"Unable to load user with email '{email}'.");
        }

        Email = email;
        // Once you add a real email sender,you should remove this code that lets you confirm the account
        displayConfirmAccountLink = false;
        if (displayConfirmAccountLink)
        {
            var userId = await _userManager.GetUserIdAsync(user);
            var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
            code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
            EmailConfirmationUrl = Url.Page(
                "/Account/ConfirmEmail",pageHandler: null,values: new { area = "Identity",userId = userId,code = code,returnUrl = returnUrl },protocol: Request.Scheme);
        }           

        return Page();
    }
}

这是 EmailSender,我从 Microsoft 文档中获取了它

public class EmailSender : IEmailSender
{
    public EmailSender(IOptions<AuthMessageSenderOptions> optionsAccessor)
    {
        Options = optionsAccessor.Value;
    }

    public AuthMessageSenderOptions Options { get; } //set only via Secret Manager

    public Task SendEmailAsync(string email,string subject,string message)
    {
        return Execute(Options.SendGridKey,subject,message,email);
    }

    public Task Execute(string apiKey,string message,string email)
    {
        var client = new SendGridClient(apiKey);
        var msg = new SendGridMessage()
        {
            From = new EmailAddress("Joe@contoso.com",Options.SendGridUser),Subject = subject,PlainTextContent = message,HtmlContent = message
        };
        msg.AddTo(new EmailAddress(email));

        // disable click tracking.
        // See https://sendgrid.com/docs/User_Guide/Settings/tracking.html
        msg.SetClickTracking(false,false);

        return client.SendEmailAsync(msg);
    }
}

当我注册新用户时,它显示错误错误在 EmailSender 类的 Execute 方法中。我不明白为什么 ApiKey 为空。请帮我解决这个问题。

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?