仅仅因为某些工作并不意味着它是正确的。所以我想就下面的代码提供一些反馈。异步ActionMethod - 这是否正确
有点历史;当用户在我们的网站上注册时,我试图发送/排队电子邮件,并遇到线程被阻塞的问题,鉴于控制器默认情况下和相关联的操作方法是同步而不是异步的,这是完全合理的。为了解决这个问题,我把以下内容放在一起,但我不确定它是否是最好的方法。
[HttpPost, AllowAnonymous]
public async Task<ActionResult> RegisterAsync(UserRegisterUserViewModel userRegisterUserViewModel)
{
if (ModelState.IsValid)
{
var user = new UserDto
{
UserName = userRegisterUserViewModel.UserName,
Password = userRegisterUserViewModel.Password,
AuthType = userRegisterUserViewModel.AuthType,
Active = 0
};
Guid userId = _userService.AddUser(user);
if (userId != Guid.Empty)
{
// Send Registration E-mail
await Task.Run(() => _userMailer.RegistrationConfirmation(user).SendAsync(),
new CancellationToken(false));
// Display Confirm View
return PartialView("_RegistrationConfirmation");
}
ModelState.AddModelError("UserName", "Unable to create account");
}
return PartialView("_Registration");
}
你的问题到底是什么?询问代码是否“好或不好”是模糊的。 – GraphicsMuncher
这是处理发送电子邮件的正确方法。或者会在稍后导致我的问题。 – SnakeEyes