C# Firebase检测用户是否存在 新用户注册空引用异常如何解决
问题根因
当待注册的邮箱不存在于Firebase数据库中时,GetTaskAsync请求返回的结果为空,调用ResultAs<Data>()得到的result对象为null,此时直接访问result.Email属性就会抛出NullReferenceException。
修复方案
你只需要在访问result的属性前做空值判断即可,修改后代码如下:
FirebaseResponse response = await client.GetTaskAsync("Information/" + Emailtextbox.TextName); Data result = response.ResultAs<Data>(); // 先判断result是否为空,为空说明邮箱不存在,可以走注册逻辑 if (result != null && Emailtextbox.TextName == result.Email) { MessageBox.Show("Email exists"); } else { var data = new Data { Email = Emailtextbox.TextName, Fullname = Fullnametextbox.TextName, Password = EncryptSHA.GetShaData(PasswordTextbox.TextName) }; // 补充你原本的data写入Firebase的逻辑即可 }
额外优化建议
- 可以加一层
response本身的空值和请求状态校验,避免请求失败时也触发空引用:
if (response == null || response.StatusCode != System.Net.HttpStatusCode.OK) { MessageBox.Show("邮箱校验请求失败,请稍后重试"); return; }
- 注意不要直接存储明文密码,你当前用了SHA加密,建议额外加盐处理,提升密码存储安全性。
内容的提问来源于stack exchange,提问作者Asaf M
相关产品推荐
相关产品推荐

