社区服务器用户名问题-在成员资格存储中找不到用户用户名不存在
时间:2020-03-06 14:57:58 来源:igfitidea点击:
每当在特定sectionID上遍历googlesitemap.ashx时,在社区服务器安装中经常会发生错误。我怀疑用户名已被修改,但帖子并未重新缓存以反映这一点。
有没有一种方法可以通过对数据库执行选择语句来检查数据完整性,或者有没有办法强制数据库重新缓存?
解决方案
答案不是很多,但是我们可以通过运行以下查询来找到受影响的数据条目...
Select * FROM cs_Posts Where UserID Not In (Select UserID From cs_Users Where UserAccountStatus = 2)
如果社区服务器发现不在MemberRoleProfileProvider实例中的用户,则可能引发此错误。
请参见CommunityServer.Users AddMembershipDataToUser()作为示例。
更新:
我注意到用户名存储在两个表cs_Users和aspnet_Users中,从而解决了我的问题。结果以某种方式在每个表中用户名都不同。手动更新,使名称相同可以解决此问题。
同样,用户将在存储过程cs_Membership_GetUsersByName的以下行中退出成员资格:
INSERT INTO @tbUsers SELECT UserId FROM dbo.aspnet_Users ar, @tbNames t WHERE LOWER(t.Name) = ar.LoweredUserName AND ar.ApplicationId = @ApplicationId
@tbNames是在某些时候来自cs_Users(?)的名称表,因此用户名不匹配,并且以后未将用户插入结果中。
另请参阅:http://dev.communityserver.com/forums/t/490899.aspx?PageIndex=2