如何在 Blazor 服务器应用程序中进行多个异步调用?

时间:2021-03-29 15:36:56

标签: c# asp.net blazor blazor-server-side

我正在创建我的第一个 Blazor 应用程序并尝试实现帐户注册功能。如果用户输入有效的电子邮件和密码进行注册,我想注册他们,在他们的新帐户下登录,然后将他们路由到“/fetchdata”页面。

UserService.cs

        public class RegisterResponse
        {
            public bool Succeeded;
            public string Message;
        }
        public async Task<RegisterResponse> Register(string email, string password)
        {
            var user = new IdentityUser { UserName = email, Email = email };
            var result = await _userManager.CreateAsync(user, password);

            if (result.Succeeded)
            {
                await _signInManager.SignInAsync(user, isPersistent: false);
                return new RegisterResponse { Succeeded = true, Message = $"{email}'s account created!" };
            }
            else
            {
                return new RegisterResponse { Succeeded = false, Message = result.Errors.FirstOrDefault().Description };
            }
        }

Index.razor

    private async Task Register()
    {
        var res = await UserService.Register(registerModel.Email, registerModel.Password);
        if (res.Succeeded)
        {
            NavigationManager.NavigateTo("/fetchdata");
        }
        else
        {
            ErrorMessage = res.Message;
        }
    }

用户已注册,但是服务中使用的每个等待都会返回到客户端并且应用程序中断(最常见的原因是错误“标题为只读...”,这源于尝试在响应后编辑标题已启动)。

但我想回到 Index.razor 的唯一响应是 RegisterResponse 对象。

我这里的设置有问题吗?我应该使用控制器而不是服务吗?

0 个答案:

没有答案