-->

简单的ASP.NET成员资格提供?(ASP.NET simple membership provid

2019-08-01 08:45发布

我打开Asp.Net的mvc 4互联网应用。 模板。 我设置连接字符串,我的数据库是这样的:

<connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=ALI-PC\;Initial Catalog=OsosPlusDb;Persist Security Info=True;User ID=sa;Password=sa;" providerName="System.Data.SqlClient" />
</connectionStrings>

我跑项目,点击注册按钮。 我创造了这样一个新的用户:

当我点击注册后我得到这个错误:

但它会在DB的新用户,它不创造membership_user(会员表不含有添加的用户信息):

我找不到什么问题。 有时没有发生错误。

UPDATE

和异常快照:

AcoountModel:

public class UsersContext : DbContext
{
    public UsersContext()
        : base("DefaultConnection")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}

[Table("UserProfile")]
public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
}

InitializeSimpleMembershipAttribute.cs

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute
{
    private static SimpleMembershipInitializer _initializer;
    private static object _initializerLock = new object();
    private static bool _isInitialized;

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // Ensure ASP.NET Simple Membership is initialized only once per app start
        LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
    }

    private class SimpleMembershipInitializer
    {
        public SimpleMembershipInitializer()
        {
            Database.SetInitializer<UsersContext>(null);

            try
            {
                using (var context = new UsersContext())
                {
                    if (!context.Database.Exists())
                    {
                        // Create the SimpleMembership database without Entity Framework migration schema
                        ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
                    }
                }

                WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
            }
        }
    }
}

最后的编辑和概要

问题是字符( “I”)。 如果我不使用“我”一切都还好。 但是,当我使用它,我得到了错误。 我怎样才能解决这个问题。

Answer 1:

手动创建数据库(不要让你的项目中创建全自动数据库),当您创建数据库集排序规则选项下Latin1_General_CI_AS ..

要么

如果你的数据库上使用土耳其语字符的数据库排序规则必须是Turkish_CI_AS,你可以改变你的列排序规则.. 按照以下步骤..

(PS:整理约为如果你使用土耳其语字符排序,如果你想有点像A,B,C,C,d,E,F,G,H,I,I,..你的数据库排序规则必须是土耳其..)

1)右键点击用户名列,然后单击修改..

2)单击整理..

3),并选择Latin1_General ..

单击确定并保存更改..



Answer 2:

我知道它有点晚了,但问题是归类定义在数据库中。 如果您选择“TURKISH_CI_AS”归类在创建数据库,如预期的MembershipProvider是行不通的。



Answer 3:

我猜你的会员表被命名为错误的或有错误的列名。 检查类似线

WebSecurity.InitializeDatabaseConnection(
     "StarterSite", "UserProfile", "UserId", "Email", autoCreateTables: true);

在AppStart.cshtml文件。

请参阅此链接了解更多信息: http://msdn.microsoft.com/en-us/library/webmatrix.webdata.websecurity.initializedatabaseconnection(v=vs.111).aspx



文章来源: ASP.NET simple membership provider?