在ASP.NET MVC4中使用Google OAuth时,MembershipCreateUserException

时间:2012-11-14 22:43:24

标签: asp.net-mvc oauth

我无法让Google OAuth在Visual Studio 2012中使用默认的MVC4 Internet应用程序项目模板。

重定向到Google并随后注册用户名后,我在AccountController的第276行收到 MembershipCreateUserException ,并显示以下消息:

  

提供的用户名无效。

失败的代码行是:

OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);

我已经检查了数据库,UserProfiles表包含我按预期输入的用户名,我尝试了各种用户名组合。

我是否遗漏了一些内容,因为源代码中的链接文章都没有提出其他需要配置的内容?

2 个答案:

答案 0 :(得分:1)

我想我明白了。 OAuthWebSecurity.CreateOrUpdateAccount需要在Users表中拥有一个用户。

问题是,该方法将"创建" webpages_OAuthMembership表中的新记录,其中包含用户表的外键。

因此,为了使您的呼叫工作首先通过WebSecurity.CreateAccount创建新用户,或者编写一些手动代码以将用户添加到表中。

我选择了WebSecurity.CreateAccount并使用GeneratePassword方法解决了这个问题。

希望它有所帮助。

答案 1 :(得分:1)

首先,我想留下我的经验。 (asp.net mvc4)

  1. 更改SimpleMembership提供程序的dbcontext。转到过滤器文件夹 - >打开InitializeSimpleMembershipAttribute。然后做这样的改变。因此它将包括数据库中的成员资格表。

    WebSecurity.InitializeDatabaseConnection("ChangeYourDbContext", "UserProfile", "UserId", "UserName", autoCreateTables: true);
    
  2. 转到AccontController。查找UserContext,默认情况下使用defaultConnection字符串。转到UserContext声明( f12 )。 并将UserContext Connectionstring重写为您的actualDbcontext

    public UsersContext(): base("YourAcutalDbContext")
    {
    
    }