Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ASP.NET成员身份的附加验证创建状态_C#_Asp.net - Fatal编程技术网

C# 使用ASP.NET成员身份的附加验证创建状态

C# 使用ASP.NET成员身份的附加验证创建状态,c#,asp.net,C#,Asp.net,我个人觉得模糊的错误信息很痛苦。在我的新实践项目中,我试图向用户输入添加额外的验证。但是,ASP.NET MembershipCreateStatus具有成员;e、 g.InvalidEmail,它在使用CreateUser方法时会处理其中一些区域 在输入到达Membership.CreateUser方法之前,我可以对提交的电子邮件执行if语句或Regex。但是,我不确定从何处开始: 我知道这个问题有点主观,但我不想以后发现有更好的方法,如果你刚刚起步,它可以成为救命稻草 除了系统检查之外,我是

我个人觉得模糊的错误信息很痛苦。在我的新实践项目中,我试图向用户输入添加额外的验证。但是,ASP.NET MembershipCreateStatus具有成员;e、 g.InvalidEmail,它在使用CreateUser方法时会处理其中一些区域

在输入到达Membership.CreateUser方法之前,我可以对提交的电子邮件执行if语句或Regex。但是,我不确定从何处开始:

我知道这个问题有点主观,但我不想以后发现有更好的方法,如果你刚刚起步,它可以成为救命稻草

除了系统检查之外,我是否应该创建一个额外的验证方法来检查电子邮件中的特定格式错误。正如您所看到的,错误消息没有说明它无效的原因

还可以创建我自己的枚举吗?例如,电子邮件包含下划线,我可以将其附加到MembershipCreateStatus?如果是,怎么做

以下是我的示例代码,缩写为:

public string GetErrorMessage(MembershipCreateStatus status)
{

switch (status)
{

case MembershipCreateStatus.InvalidEmail:
return "The e-mail address provided is invalid.";

default:
return "Go to jail!!";
}
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
try
{
Membership.CreateUser(txtUserName.Text, txtPassword.Text, txtEmail.Text);
}
catch (MembershipCreateUserException ex)
{
ltrStatusMsg.Text = GetErrorMessage(ex.StatusCode);
}
catch (HttpException ex)
{
ltrStatusMsg.Text = ex.Message;
}
}

谢谢我的朋友。

在我的CustomMembershipProvider中,我没有使用CreateUser方法,我有一个CreateUser方法作为我的用户业务对象代码的一部分,带有一个输出参数(自定义枚举)和各种无效(或有效)结果。

有很多方法可以剥猫皮。当然,您可以在调用
Membership.CreateUser
之前进行自己的验证。您的验证方法可以引发
MembershipCreateUserException
并重用现有状态代码之一,或者引发其他异常。抛出的异常可以是自定义异常,也可以重用现有异常类型,例如


是的,我只是想添加一个枚举,但意识到我必须做一个覆盖。这有点超出我的想象。你是怎么做到的?我只是检查了一下,事实上我甚至没有在成员资格提供程序中使用CreateUser方法,我保持成员资格提供程序的轻量级,主要是为了验证。我已经更新了我的答案。
try
{
    ValidateUser(txtUserName.Text, txtPassword.Text, txtEmail.Text);
    Membership.CreateUser(txtUserName.Text, txtPassword.Text, txtEmail.Text);
}
catch (MembershipCreateUserException ex)
{
    ltrStatusMsg.Text = GetErrorMessage(ex.StatusCode);
}
catch (ValidationException ex)
{
    ltrStatusMsg.Text = ex.Message;
}
catch (Exception ex)
{
    // log exception ...

    ltrStatusMsg.Text = "An unexpected error occurred while creating the user";
}

...
private void ValidateUser(...)
{
    if (... not valid ...) throw new ValidationException("some suitable message");
}