C# 从异步方法发送电子邮件
如果我想在新邮件确认后立即发送邮件,我该怎么做? 下面的代码是我在C# 从异步方法发送电子邮件,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,如果我想在新邮件确认后立即发送邮件,我该怎么做? 下面的代码是我在ConfirmEmail方法中得到的。当我运行代码时,我会得到异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。在上等待UserManager.SendEmailAsync(用户ID,“API”,“API代码为:”+user.ApiCode) 我认为UserManager.FindById没有返回任何内容,但不确定如何执行 任何建议/想法都会有所帮助 public async T
ConfirmEmail
方法中得到的。当我运行代码时,我会得到异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。
在上等待UserManager.SendEmailAsync(用户ID,“API”,“API代码为:”+user.ApiCode)代码>
我认为UserManager.FindById
没有返回任何内容,但不确定如何执行
任何建议/想法都会有所帮助
public async Task<ActionResult> ConfirmEmail(string userId, string code)
{
if (userId == null || code == null)
{
return View("Error");
}
var result = await UserManager.ConfirmEmailAsync(userId, code);
var user = UserManager.FindById(User.Identity.GetUserId());
await UserManager.SendEmailAsync(userId, "API", "API Code is: " + user.ApiCode);
return View(result.Succeeded ? "ConfirmEmail" : "Error");
}
公共异步任务确认邮件(字符串userId,字符串代码)
{
if(userId==null | | code==null)
{
返回视图(“错误”);
}
var result=await UserManager.confirmemailsync(userId,code);
var user=UserManager.FindById(user.Identity.GetUserId());
等待UserManager.sendmailasync(userId,“API”,“API代码为:”+user.ApiCode);
返回视图(result.successed?“确认邮件”:“错误”);
}
对于您提供的信息,我想问题可能是用户未经过身份验证,因此user.Identity
将返回null,因此NullReferenceException
您可以尝试使用操作参数userId
中接收到的id获取用户信息
public async Task<ActionResult> ConfirmEmail(string userId, string code)
{
if (userId == null || code == null)
{
return View("Error");
}
var result = await UserManager.ConfirmEmailAsync(userId, code);
//var user = UserManager.FindById(User.Identity.GetUserId());
var user = UserManager.FindById(userId); //use the received parameter to get the user
await UserManager.SendEmailAsync(userId, "API", "API Code is: " + user.ApiCode);
return View(result.Succeeded ? "ConfirmEmail" : "Error");
}
公共异步任务确认邮件(字符串userId,字符串代码)
{
if(userId==null | | code==null)
{
返回视图(“错误”);
}
var result=await UserManager.confirmemailsync(userId,code);
//var user=UserManager.FindById(user.Identity.GetUserId());
var user=UserManager.FindById(userId);//使用收到的参数获取用户
等待UserManager.sendmailasync(userId,“API”,“API代码为:”+user.ApiCode);
返回视图(result.successed?“确认邮件”:“错误”);
}
希望这有帮助 我的猜测是,用户尚未通过身份验证,因此User.Identity为null,因此出现了NullReferenceException。您是否尝试过var user=UserManager.FindById(userId);取而代之的是?在使用i是否调试?之前,您没有检查user
是否为null?。您是如何实现用户登录过程的?您是否正在使用自己的MembershipProvider实现?可能与@KarelTamayo重复?您能否创建一个正确的答案?你的评论帮助解决了问题。谢谢