我在 blazor(服务器)上有一个注册页面。在该页面上,我想使用 AspnetCor.Identity 实现注册功能
这是方法:(_usermanager 的类型为 AspNetCore.Identity.UserManager<>)
public bool Register(RegisterUser regUser)
{
var newUser = new ApplicationUser { Email = regUser.Mail, UserName = regUser.Mail};
var sd= _userManager.CreateAsync(newUser, "password").Result;
if (!sd.Succeeded)
{
return false;
}
return true;
}
从 blazor 页面上的 HandleValidSubmit 中调用该方法:
<EditForm Model="@_registerUser" OnValidSubmit="HandleValidSubmit">
//...
</EditForm>
@code {
private void HandleValidSubmit()
{
if (identity.Register(_registerUser)) {
NaviationManager.NavigateTo($"/manage/registersent");
}
}
}
当注册失败时,它就像设计的那样工作,返回 false。但是当注册会很好时,我最终陷入了僵局_userManager.CreateAsync(newUser, "password").Result;
当我不尝试使异步调用同步并将调用替换为_userManager.CreateAsync(newUser, "password")(并简单地忽略任何返回值)时,用户将毫无问题地创建。
我应该如何处理带有内部返回值的异步调用HandleValidSubmit?