C# 为什么未调用CustomeMembershipProvider?
在查看多个SO q/a之后 我做了以下工作: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
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);
}