问题描述
我有注册确认问题。它显示一个 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 为空。请帮我解决这个问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)