我正在尝试更新用户的评论,但是当我尝试使用以下代码时:
MembershipUser User = Membership.GetUser(UserName);
User.Comment = "Whatever...";
Membership.UpdateUser(User);
它抛出错误:
提供的电子邮件无效。
我在致电UpdateUser
之前检查了电子邮件,这很好。谁能明白为什么会这样呢?
更新
堆栈追踪 -
[ProviderException: The E-mail supplied is invalid.]
System.Web.Security.SqlMembershipProvider.UpdateUser(MembershipUser user) +1583
System.Web.Security.MembershipUser.Update() +111
Security_Login.btnSubmit_Click(Object sender, EventArgs e) in c:\inetpub\V1\VerbalInk.Web\Security\Login.aspx.cs:40
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +115
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +140
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981
答案 0 :(得分:2)
数据库中可能有Duplicate Email Address
。如果将requiresUniqueEmail
设置为false
在Membership Connection String
中,将其设置为true
。
<add name="AspNetSqlMembershipProvider" applicationName="blah"
connectionStringName="balh" enablePasswordReset="true" enablePasswordRetrieval="false"
maxInvalidPasswordAttempts="5" minRequiredNonalphanumericCharacters="0"
minRequiredPasswordLength="5" passwordAttemptWindow="15" passwordFormat="Hashed"
requiresQuestionAndAnswer="false" **requiresUniqueEmail="true"**
type="System.Web.Security.SqlMembershipProvider" />
答案 1 :(得分:0)
原来这是由于我的aspnet_Membership表中有另一条记录与我尝试更新的记录具有相同的电子邮件地址。这是一个测试数据库,所以我猜我必须手动添加它或者不久之后添加它,因为使用当前系统不可能创建重复项。
出于某种原因,他们有一个非常误导性的错误消息,表明电子邮件地址有问题,实际上,问题与重复的电子邮件有关。
希望这可以帮助将来的某个人。