在这一行我得到一个异常(exception) -
OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
System.Web.Security.MembershipCreateUserException:提供的用户名无效。
进入这里的数据是
- 供应商-“ Facebook ”
- providerUserId - “1321311387573991”
- model.UserName - “麦克斯·佩恩”
初始化工作正常使用
WebSecurity.InitializeDatabaseConnection("club", "User", "UserID", "UserName", autoCreateTables: true);
我找不到任何例子说明为什么它说用户名无效? 是否有某处标准来定义什么是正确的用户名?
最佳答案
我同样在寻找对此的解释。我不确定我是否完全理解,但在实验、调试和观察 intellitrace 事件之后,CreateOrUpdateAccount 似乎正在创建或更新 OAuthMembership 表中的一个条目,其中仅包含 Provider、ProviderUserId 和 UserId,这是通过查询 [在我的例子中] 基于此唯一用户名的 UserProfile 表。这样,如果您使用不同的提供商和 providerUserId 调用 CreateOrUpdateAccount,但使用相同的用户名,则两个提供商登录都绑定(bind)到您应用中的同一用户帐户。
在创建/更新相应的 OAuthMembership 记录之前,我必须添加一个 UserProfile。在 VS 模板中,它看起来像这样:
db.UserProfiles.Add(new UserProfile { UserName = model.UserName });
db.SaveChanges();
OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
关于c# - MembershipCreateUserException - 提供的用户名无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12851476/