在阅读了该网站上的许多博客和帖子之后,我认为尝试覆盖 SimpleMembershipProvider 中的 RequiresUniqueEmail 似乎只是一个琐碎的代码。
所以我正在寻找一些关于我所做的事情的建议。我在数据库中的 email 列上添加了一个唯一索引,然后我有一个 try catch 块来捕获任何 sql 异常。
我查看用户发布的电子邮件地址的异常消息,如果找到,则返回一条消息,说明“电子邮件已在使用中”,否则返回另一条消息。
这适用于我的机器,我收到的错误消息是:
Message=Cannot insert duplicate key row in object 'dbo.UserProfile'
with unique index 'idx_UniqueEmail'. The duplicate key value is
(myemail@test.com).
由于我不是经验丰富的程序员,因此将不胜感激任何反馈。
我的代码如下。
catch (SqlException e)
{
var errorMessage = e.Message.ToLower();
ModelState.AddModelError("", errorMessage.Contains(model.Email) ? "Sorry the email address is already in use." : "Sorry an error has occured");
}