C# 为什么未调用CustomeMembershipProvider?

C# 为什么未调用CustomeMembershipProvider?,c#,asp.net-mvc,asp.net-mvc-4,simplemembership,C#,Asp.net Mvc,Asp.net Mvc 4,Simplemembership,在查看多个SO q/a之后 我做了以下工作: public class CustomMembershipProvider : SimpleMembershipProvider { public override string CreateUserAndAccount(string userName, string password, IDictionary<string, object> values) { // code to insert data i

在查看多个SO q/a之后 我做了以下工作:

public class CustomMembershipProvider : SimpleMembershipProvider
{

    public override string CreateUserAndAccount(string userName, string password, IDictionary<string, object> values)
    {
     // code to insert data into UserAccounts and UserProfiles tables 
     // using simple sqlconnections
    }
}
Web配置已完成

<membership defaultProvider="CustomMembershipProvider">
  <providers>
    <clear/>
    <add name="CustomMembershipProvider" type="Helpers.CustomMembershipProvider, assembly" />
  </providers>
</membership>
当我从寄存器控制器操作调用以下语句时

WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { DisplayName= model.DisplayName, PrimaryEmail = model.PrimaryEmail});

自定义提供程序中的断点未命中。有人能帮我吗?

您在SimpleMembershipProvider中重写了不正确的方法。CreateUserAndAccount有几个重载方法。如果你看一下,你可以看到它调用了这个签名。以下是WebSecurity.CreateUserAndAccount的代码:

    public static string CreateUserAndAccount(string userName, string password, object propertyValues = null, bool requireConfirmationToken = false)
    {
        ExtendedMembershipProvider provider = VerifyProvider();
        Debug.Assert(provider != null); // VerifyProvider checks this

        IDictionary<string, object> values = null;
        if (propertyValues != null)
        {
            values = new RouteValueDictionary(propertyValues);
        }

        return provider.CreateUserAndAccount(userName, password, requireConfirmationToken, values);
    }
public静态字符串CreateUserAndAccount(字符串用户名、字符串密码、对象属性值=null、bool requireConfirmationToken=false)
{
ExtendedMembershipProvider=VerifyProvider();
Assert(provider!=null);//VerifyProvider检查此项
IDictionary值=null;
if(PropertyValue!=null)
{
值=新的RouteValueDictionary(propertyValues);
}
返回provider.CreateUserAndAccount(用户名、密码、requireConfirmationToken、值);
}

您的CustomMembershProvider是否真的位于Helpers命名空间中,并且您的程序集名称“assembly”是否如web.config中所示?
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { DisplayName= model.DisplayName, PrimaryEmail = model.PrimaryEmail});
    public static string CreateUserAndAccount(string userName, string password, object propertyValues = null, bool requireConfirmationToken = false)
    {
        ExtendedMembershipProvider provider = VerifyProvider();
        Debug.Assert(provider != null); // VerifyProvider checks this

        IDictionary<string, object> values = null;
        if (propertyValues != null)
        {
            values = new RouteValueDictionary(propertyValues);
        }

        return provider.CreateUserAndAccount(userName, password, requireConfirmationToken, values);
    }