MembershipCreateUserException - 提供的用户名无效

MoX*_*lod 7 c# asp.net asp.net-membership dotnetopenauth asp.net-mvc-4

在这条线上,我得到一个例外 -

OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
Run Code Online (Sandbox Code Playgroud)

System.Web.Security.MembershipCreateUserException:提供的用户名无效.

进入此的数据是

  • 提供者 - "facebook"
  • providerUserId - "1321311387573991"
  • model.UserName - "Max Payne"

初始化工作正常

WebSecurity.InitializeDatabaseConnection("club", "User", "UserID", "UserName", autoCreateTables: true);
Run Code Online (Sandbox Code Playgroud)

我找不到任何说明用户名无效的例子?是否有某个标准定义了什么是正确的用户名?

小智 14

我同样在寻找解释.我不确定我完全理解,但经过实验,调试和观看intellitrace事件后,似乎CreateOrUpdateAccount正在创建或更新OAuthMembership表中的条目,只有Provider,ProviderUserId和UserId,这是通过查询[在我的情况下确定] ] UserProfile表基于此唯一UserName.这样,如果您使用不同的提供程序和providerUserId调用CreateOrUpdateAccount,但使用相同的用户名,则两个提供程序登录都将绑定到应用程序中的同一用户帐户.

在创建/更新相应的OAuthMembership记录之前,我必须添加UserProfile.在VS模板中,它看起来像这样:

db.UserProfiles.Add(new UserProfile { UserName = model.UserName }); 
db.SaveChanges();

OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
Run Code Online (Sandbox Code Playgroud)


小智 5

我有同样的问题.我通过在SimpleMembershipInitializer和UsersContext类中指定正确的连接字符串来解决它.我正在使用ASP.NET MVC4